mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 02:09:41 +00:00
Merge branch 'master' of https://github.com/PolarisSS13/Polaris into polaris-sync-2018-03-15
# Conflicts: # README.md # code/__defines/mobs.dm # code/__defines/subsystems.dm # code/_helpers/global_lists.dm # code/controllers/subsystems/garbage.dm # code/controllers/subsystems/overlays.dm # code/datums/datacore.dm # code/datums/supplypacks/munitions.dm # code/game/machinery/suit_storage_unit.dm # code/game/objects/items/devices/communicator/UI.dm # code/game/objects/items/weapons/id cards/station_ids.dm # code/game/objects/random/random.dm # code/game/turfs/simulated/floor.dm # code/game/turfs/simulated/floor_icon.dm # code/modules/awaymissions/gateway.dm # code/modules/client/preferences.dm # code/modules/ext_scripts/python.dm # code/modules/mob/living/carbon/human/human.dm # code/modules/mob/living/carbon/human/life.dm # code/modules/mob/living/carbon/human/species/station/station.dm # code/modules/mob/living/carbon/human/species/virtual_reality/avatar.dm # code/modules/mob/living/carbon/human/update_icons.dm # code/modules/mob/living/living.dm # code/modules/mob/living/living_defines.dm # code/modules/mob/living/simple_animal/animals/bear.dm # code/modules/mob/mob_helpers.dm # code/modules/mob/new_player/new_player.dm # code/modules/mob/new_player/preferences_setup.dm # code/modules/mob/new_player/sprite_accessories.dm # code/modules/organs/organ_external.dm # code/modules/organs/organ_icon.dm # code/modules/organs/robolimbs.dm # code/modules/reagents/reagent_containers/glass.dm # code/modules/reagents/reagent_containers/syringes.dm # html/changelogs/.all_changelog.yml # maps/southern_cross/southern_cross-1.dmm # maps/southern_cross/southern_cross-3.dmm # maps/southern_cross/southern_cross-4.dmm # maps/southern_cross/southern_cross-6.dmm # vorestation.dme
This commit is contained in:
@@ -80,29 +80,34 @@
|
|||||||
#define BLOCKHEADHAIR 0x20 // Hides the user's hair overlay. Leaves facial hair.
|
#define BLOCKHEADHAIR 0x20 // Hides the user's hair overlay. Leaves facial hair.
|
||||||
#define BLOCKHAIR 0x40 // Hides the user's hair, facial and otherwise.
|
#define BLOCKHAIR 0x40 // Hides the user's hair, facial and otherwise.
|
||||||
|
|
||||||
// Slots.
|
// Slots as numbers //
|
||||||
#define slot_back 1
|
//Hands
|
||||||
#define slot_wear_mask 2
|
#define slot_l_hand 1
|
||||||
#define slot_handcuffed 3
|
#define slot_r_hand 2 //Some things may reference this, try to keep it here
|
||||||
#define slot_l_hand 4
|
//Shown unless F12 pressed
|
||||||
#define slot_r_hand 5
|
#define slot_back 3
|
||||||
#define slot_belt 6
|
#define slot_belt 4
|
||||||
#define slot_wear_id 7
|
#define slot_wear_id 5
|
||||||
#define slot_l_ear 8
|
#define slot_l_store 6
|
||||||
#define slot_glasses 9
|
#define slot_r_store 7 //Some things may reference this, try to keep it here
|
||||||
|
//Shown when inventory unhidden
|
||||||
|
#define slot_glasses 8
|
||||||
|
#define slot_wear_mask 9
|
||||||
#define slot_gloves 10
|
#define slot_gloves 10
|
||||||
#define slot_head 11
|
#define slot_head 11
|
||||||
#define slot_shoes 12
|
#define slot_shoes 12
|
||||||
#define slot_wear_suit 13
|
#define slot_wear_suit 13
|
||||||
#define slot_w_uniform 14
|
#define slot_w_uniform 14
|
||||||
#define slot_l_store 15
|
#define slot_s_store 15
|
||||||
#define slot_r_store 16
|
#define slot_l_ear 16
|
||||||
#define slot_s_store 17
|
#define slot_r_ear 17
|
||||||
#define slot_in_backpack 18
|
//Secret slots
|
||||||
#define slot_legcuffed 19
|
#define slot_legs 18
|
||||||
#define slot_r_ear 20
|
#define slot_tie 19
|
||||||
#define slot_legs 21
|
#define slot_handcuffed 20
|
||||||
#define slot_tie 22
|
#define slot_legcuffed 21
|
||||||
|
#define slot_in_backpack 22
|
||||||
|
#define SLOT_TOTAL 22
|
||||||
|
|
||||||
// Inventory slot strings.
|
// Inventory slot strings.
|
||||||
// since numbers cannot be used as associative list keys.
|
// since numbers cannot be used as associative list keys.
|
||||||
@@ -120,7 +125,7 @@
|
|||||||
#define slot_head_str "slot_head"
|
#define slot_head_str "slot_head"
|
||||||
#define slot_wear_mask_str "slot_wear_mask"
|
#define slot_wear_mask_str "slot_wear_mask"
|
||||||
#define slot_handcuffed_str "slot_handcuffed"
|
#define slot_handcuffed_str "slot_handcuffed"
|
||||||
#define slot_legcuffed_str "slot_legcuffed"
|
#define slot_legcuffed_str "slot_legcuffed"
|
||||||
#define slot_wear_mask_str "slot_wear_mask"
|
#define slot_wear_mask_str "slot_wear_mask"
|
||||||
#define slot_wear_id_str "slot_wear_id"
|
#define slot_wear_id_str "slot_wear_id"
|
||||||
#define slot_gloves_str "slot_gloves"
|
#define slot_gloves_str "slot_gloves"
|
||||||
|
|||||||
@@ -98,9 +98,17 @@
|
|||||||
#define INV_R_HAND_DEF_ICON 'icons/mob/items/righthand.dmi'
|
#define INV_R_HAND_DEF_ICON 'icons/mob/items/righthand.dmi'
|
||||||
#define INV_W_UNIFORM_DEF_ICON 'icons/mob/uniform.dmi'
|
#define INV_W_UNIFORM_DEF_ICON 'icons/mob/uniform.dmi'
|
||||||
#define INV_ACCESSORIES_DEF_ICON 'icons/mob/ties.dmi'
|
#define INV_ACCESSORIES_DEF_ICON 'icons/mob/ties.dmi'
|
||||||
#define INV_SUIT_DEF_ICON 'icons/mob/ties.dmi'
|
#define INV_TIE_DEF_ICON 'icons/mob/ties.dmi'
|
||||||
#define INV_SUIT_DEF_ICON 'icons/mob/suit.dmi'
|
#define INV_SUIT_DEF_ICON 'icons/mob/suit.dmi'
|
||||||
#define MAX_SUPPLIED_LAW_NUMBER 50
|
#define INV_WEAR_ID_DEF_ICON 'icons/mob/mob.dmi'
|
||||||
|
#define INV_GLOVES_DEF_ICON 'icons/mob/hands.dmi'
|
||||||
|
#define INV_EYES_DEF_ICON 'icons/mob/eyes.dmi'
|
||||||
|
#define INV_EARS_DEF_ICON 'icons/mob/ears.dmi'
|
||||||
|
#define INV_FEET_DEF_ICON 'icons/mob/feet.dmi'
|
||||||
|
#define INV_BELT_DEF_ICON 'icons/mob/belt.dmi'
|
||||||
|
#define INV_MASK_DEF_ICON 'icons/mob/mask.dmi'
|
||||||
|
#define INV_HCUFF_DEF_ICON 'icons/mob/mob.dmi'
|
||||||
|
#define INV_LCUFF_DEF_ICON 'icons/mob/mob.dmi'
|
||||||
|
|
||||||
// Character's economic class
|
// Character's economic class
|
||||||
#define CLASS_UPPER "Wealthy"
|
#define CLASS_UPPER "Wealthy"
|
||||||
@@ -218,6 +226,44 @@
|
|||||||
#define FBP_POSI "Positronic"
|
#define FBP_POSI "Positronic"
|
||||||
#define FBP_DRONE "Drone"
|
#define FBP_DRONE "Drone"
|
||||||
|
|
||||||
|
// 'Regular' species.
|
||||||
|
#define SPECIES_HUMAN "Human"
|
||||||
|
#define SPECIES_HUMAN_VATBORN "Vatborn"
|
||||||
|
#define SPECIES_UNATHI "Unathi"
|
||||||
|
#define SPECIES_SKRELL "Skrell"
|
||||||
|
#define SPECIES_TESHARI "Teshari"
|
||||||
|
#define SPECIES_TAJ "Tajara"
|
||||||
|
#define SPECIES_PROMETHEAN "Promethean"
|
||||||
|
#define SPECIES_DIONA "Diona"
|
||||||
|
#define SPECIES_VOX "Vox"
|
||||||
|
|
||||||
|
// Monkey and alien monkeys.
|
||||||
|
#define SPECIES_MONKEY "Monkey"
|
||||||
|
#define SPECIES_MONKEY_TAJ "Farwa"
|
||||||
|
#define SPECIES_MONKEY_SKRELL "Neaera"
|
||||||
|
#define SPECIES_MONKEY_UNATHI "Stok"
|
||||||
|
|
||||||
|
// Virtual Reality IDs.
|
||||||
|
#define SPECIES_VR "Virtual Reality Avatar"
|
||||||
|
#define SPECIES_VR_HUMAN "Virtual Reality Human"
|
||||||
|
#define SPECIES_VR_UNATHI "Virtual Reality Unathi"
|
||||||
|
#define SPECIES_VR_TAJ "Virtual Reality Tajara" // NO CHANGING.
|
||||||
|
#define SPECIES_VR_SKRELL "Virtual Reality Skrell"
|
||||||
|
#define SPECIES_VR_TESHARI "Virtual Reality Teshari"
|
||||||
|
#define SPECIES_VR_DIONA "Virtual Reality Diona"
|
||||||
|
|
||||||
|
// Ayyy IDs.
|
||||||
|
#define SPECIES_XENO "Xenomorph"
|
||||||
|
#define SPECIES_XENO_DRONE "Xenomorph Drone"
|
||||||
|
#define SPECIES_XENO_HUNTER "Xenomorph Hunter"
|
||||||
|
#define SPECIES_XENO_SENTINEL "Xenomorph Sentinel"
|
||||||
|
#define SPECIES_XENO_QUEEN "Xenomorph Queen"
|
||||||
|
|
||||||
|
// Misc species. Mostly unused but might as well be complete.
|
||||||
|
#define SPECIES_SHADOW "Shadow"
|
||||||
|
#define SPECIES_SKELETON "Skeleton"
|
||||||
|
#define SPECIES_GOLEM "Golem"
|
||||||
|
|
||||||
// Used to seperate simple animals by ""intelligence"".
|
// Used to seperate simple animals by ""intelligence"".
|
||||||
#define SA_PLANT 1
|
#define SA_PLANT 1
|
||||||
#define SA_ANIMAL 2
|
#define SA_ANIMAL 2
|
||||||
@@ -256,3 +302,6 @@
|
|||||||
#define VIS_MESONS 20
|
#define VIS_MESONS 20
|
||||||
|
|
||||||
#define VIS_COUNT 20 //Must be highest number from above.
|
#define VIS_COUNT 20 //Must be highest number from above.
|
||||||
|
|
||||||
|
//Some mob icon layering defines
|
||||||
|
#define BODY_LAYER -100
|
||||||
|
|||||||
@@ -48,6 +48,7 @@
|
|||||||
#define LANGUAGE_TERMINUS "Terminus"
|
#define LANGUAGE_TERMINUS "Terminus"
|
||||||
#define LANGUAGE_SKRELLIANFAR "High Skrellian"
|
#define LANGUAGE_SKRELLIANFAR "High Skrellian"
|
||||||
#define LANGUAGE_MINBUS "Minbus"
|
#define LANGUAGE_MINBUS "Minbus"
|
||||||
|
#define LANGUAGE_AKHANI "Akhani"
|
||||||
|
|
||||||
// Language flags.
|
// Language flags.
|
||||||
#define WHITELISTED 1 // Language is available if the speaker is whitelisted.
|
#define WHITELISTED 1 // Language is available if the speaker is whitelisted.
|
||||||
|
|||||||
@@ -31,8 +31,8 @@ var/global/list/turfs = list() //list of all turfs
|
|||||||
var/global/list/all_species[0]
|
var/global/list/all_species[0]
|
||||||
var/global/list/all_languages[0]
|
var/global/list/all_languages[0]
|
||||||
var/global/list/language_keys[0] // Table of say codes for all languages
|
var/global/list/language_keys[0] // Table of say codes for all languages
|
||||||
var/global/list/whitelisted_species = list("Human") // Species that require a whitelist check.
|
var/global/list/whitelisted_species = list(SPECIES_HUMAN) // Species that require a whitelist check.
|
||||||
var/global/list/playable_species = list("Custom Species","Human") // A list of ALL playable species, whitelisted, latejoin or otherwise. //VOREStation Edit - Making sure custom species is obvious.
|
var/global/list/playable_species = list("Custom Species", SPECIES_HUMAN) // A list of ALL playable species, whitelisted, latejoin or otherwise. //VOREStation Edit - Making sure custom species is obvious.
|
||||||
|
|
||||||
var/list/mannequins_
|
var/list/mannequins_
|
||||||
|
|
||||||
|
|||||||
@@ -634,175 +634,211 @@ as a single icon. Useful for when you want to manipulate an icon via the above a
|
|||||||
The _flatIcons list is a cache for generated icon files.
|
The _flatIcons list is a cache for generated icon files.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
proc // Creates a single icon from a given /atom or /image. Only the first argument is required.
|
// Creates a single icon from a given /atom or /image. Only the first argument is required.
|
||||||
getFlatIcon(image/A, defdir=2, deficon=null, defstate="", defblend=BLEND_DEFAULT, always_use_defdir = 0, picture_planes = list(PLANE_WORLD))
|
/proc/getFlatIcon(image/A, defdir, deficon, defstate, defblend, start = TRUE, no_anim = FALSE)
|
||||||
// We start with a blank canvas, otherwise some icon procs crash silently
|
// We start with a blank canvas, otherwise some icon procs crash silently
|
||||||
var/icon/flat = icon('icons/effects/effects.dmi', "icon_state"="nothing") // Final flattened icon
|
var/icon/flat = icon('icons/effects/effects.dmi', "nothing") // Final flattened icon
|
||||||
if(!A)
|
if(!A)
|
||||||
return flat
|
return flat
|
||||||
if(A.alpha <= 0)
|
if(A.alpha <= 0)
|
||||||
return flat
|
return flat
|
||||||
var/noIcon = FALSE
|
var/noIcon = FALSE
|
||||||
|
|
||||||
var/curicon
|
if(start)
|
||||||
if(A.icon)
|
if(!defdir)
|
||||||
curicon = A.icon
|
defdir = A.dir
|
||||||
|
if(!deficon)
|
||||||
|
deficon = A.icon
|
||||||
|
if(!defstate)
|
||||||
|
defstate = A.icon_state
|
||||||
|
if(!defblend)
|
||||||
|
defblend = A.blend_mode
|
||||||
|
|
||||||
|
var/curicon
|
||||||
|
if(A.icon)
|
||||||
|
curicon = A.icon
|
||||||
|
else
|
||||||
|
curicon = deficon
|
||||||
|
|
||||||
|
if(!curicon)
|
||||||
|
noIcon = TRUE // Do not render this object.
|
||||||
|
|
||||||
|
var/curstate
|
||||||
|
if(A.icon_state)
|
||||||
|
curstate = A.icon_state
|
||||||
|
else
|
||||||
|
curstate = defstate
|
||||||
|
|
||||||
|
if(!noIcon && !(curstate in icon_states(curicon)))
|
||||||
|
if("" in icon_states(curicon))
|
||||||
|
curstate = ""
|
||||||
else
|
else
|
||||||
curicon = deficon
|
|
||||||
|
|
||||||
if(!curicon)
|
|
||||||
noIcon = TRUE // Do not render this object.
|
noIcon = TRUE // Do not render this object.
|
||||||
|
|
||||||
var/curstate
|
var/curdir
|
||||||
if(A.icon_state)
|
var/base_icon_dir //We'll use this to get the icon state to display if not null BUT NOT pass it to overlays as the dir we have
|
||||||
curstate = A.icon_state
|
|
||||||
else
|
//These should use the parent's direction (most likely)
|
||||||
curstate = defstate
|
if(!A.dir || A.dir == SOUTH)
|
||||||
|
curdir = defdir
|
||||||
|
else
|
||||||
|
curdir = A.dir
|
||||||
|
|
||||||
if(!noIcon && !(curstate in icon_states(curicon)))
|
//Let's check if the icon actually contains any diagonals, just skip if it's south to save (lot of) time
|
||||||
if("" in icon_states(curicon))
|
if(curdir != SOUTH)
|
||||||
curstate = ""
|
var/icon/test_icon
|
||||||
else
|
var/directionals_exist = FALSE
|
||||||
noIcon = TRUE // Do not render this object.
|
var/list/dirs_to_check = cardinal - SOUTH
|
||||||
|
outer:
|
||||||
|
for(var/possible_dir in dirs_to_check)
|
||||||
|
test_icon = icon(curicon,curstate,possible_dir,frame=1)
|
||||||
|
for(var/x in 1 to world.icon_size)
|
||||||
|
for(var/y in 1 to world.icon_size)
|
||||||
|
if(!isnull(test_icon.GetPixel(x,y)))
|
||||||
|
directionals_exist = TRUE
|
||||||
|
break outer
|
||||||
|
if(!directionals_exist)
|
||||||
|
base_icon_dir = SOUTH
|
||||||
|
if(!base_icon_dir)
|
||||||
|
base_icon_dir = curdir
|
||||||
|
|
||||||
var/curdir
|
var/curblend
|
||||||
if(A.dir != 2 && !always_use_defdir)
|
if(A.blend_mode == BLEND_DEFAULT)
|
||||||
curdir = A.dir
|
curblend = defblend
|
||||||
else
|
else
|
||||||
curdir = defdir
|
curblend = A.blend_mode
|
||||||
|
|
||||||
var/curblend
|
// Before processing overlays, make sure any pending overlays are applied
|
||||||
if(A.blend_mode == BLEND_DEFAULT)
|
if (isloc(A))
|
||||||
curblend = defblend
|
var/atom/aAtom = A
|
||||||
else
|
if(aAtom.flags & OVERLAY_QUEUED)
|
||||||
curblend = A.blend_mode
|
COMPILE_OVERLAYS(aAtom)
|
||||||
|
|
||||||
// Layers will be a sorted list of icons/overlays, based on the order in which they are displayed
|
// Layers will be a sorted list of icons/overlays, based on the order in which they are displayed
|
||||||
var/list/layers = list()
|
var/list/layers = list()
|
||||||
var/image/copy
|
var/image/copy
|
||||||
// Add the atom's icon itself, without pixel_x/y offsets.
|
// Add the atom's icon itself, without pixel_x/y offsets.
|
||||||
if(!noIcon)
|
if(!noIcon)
|
||||||
copy = image(icon=curicon, icon_state=curstate, layer=A.layer, dir=curdir)
|
copy = image(icon=curicon, icon_state=curstate, layer=A.layer, dir=base_icon_dir)
|
||||||
copy.color = A.color
|
copy.color = A.color
|
||||||
copy.alpha = A.alpha
|
copy.alpha = A.alpha
|
||||||
copy.blend_mode = curblend
|
copy.blend_mode = curblend
|
||||||
layers[copy] = A.layer
|
layers[copy] = A.layer
|
||||||
|
|
||||||
// Loop through the underlays, then overlays, sorting them into the layers list
|
|
||||||
var/list/process = A.underlays // Current list being processed
|
|
||||||
var/pSet=0 // Which list is being processed: 0 = underlays, 1 = overlays
|
|
||||||
var/curIndex=1 // index of 'current' in list being processed
|
|
||||||
var/current // Current overlay being sorted
|
|
||||||
var/currentLayer // Calculated layer that overlay appears on (special case for FLOAT_LAYER)
|
|
||||||
var/compare // The overlay 'add' is being compared against
|
|
||||||
var/cmpIndex // The index in the layers list of 'compare'
|
|
||||||
while(TRUE)
|
|
||||||
if(curIndex<=process.len)
|
|
||||||
current = process[curIndex]
|
|
||||||
if(current)
|
|
||||||
var/currentPlane = current:plane
|
|
||||||
if (currentPlane != FLOAT_PLANE && !(currentPlane in picture_planes))
|
|
||||||
curIndex++
|
|
||||||
continue;
|
|
||||||
currentLayer = current:layer
|
|
||||||
if(currentLayer<0) // Special case for FLY_LAYER
|
|
||||||
if(currentLayer <= -1000) return flat
|
|
||||||
if(pSet == 0) // Underlay
|
|
||||||
currentLayer = A.layer+currentLayer/1000
|
|
||||||
else // Overlay
|
|
||||||
currentLayer = A.layer+(1000+currentLayer)/1000
|
|
||||||
|
|
||||||
// Sort add into layers list
|
|
||||||
for(cmpIndex=1,cmpIndex<=layers.len,cmpIndex++)
|
|
||||||
compare = layers[cmpIndex]
|
|
||||||
if(currentLayer < layers[compare]) // Associated value is the calculated layer
|
|
||||||
layers.Insert(cmpIndex,current)
|
|
||||||
layers[current] = currentLayer
|
|
||||||
break
|
|
||||||
if(cmpIndex>layers.len) // Reached end of list without inserting
|
|
||||||
layers[current]=currentLayer // Place at end
|
|
||||||
|
|
||||||
|
// Loop through the underlays, then overlays, sorting them into the layers list
|
||||||
|
var/list/process = A.underlays // Current list being processed
|
||||||
|
var/pSet=0 // Which list is being processed: 0 = underlays, 1 = overlays
|
||||||
|
var/curIndex=1 // index of 'current' in list being processed
|
||||||
|
var/current // Current overlay being sorted
|
||||||
|
var/currentLayer // Calculated layer that overlay appears on (special case for FLOAT_LAYER)
|
||||||
|
var/compare // The overlay 'add' is being compared against
|
||||||
|
var/cmpIndex // The index in the layers list of 'compare'
|
||||||
|
while(TRUE)
|
||||||
|
if(curIndex<=process.len)
|
||||||
|
current = process[curIndex]
|
||||||
|
if(!current)
|
||||||
|
curIndex++ //Try the next layer
|
||||||
|
continue
|
||||||
|
var/image/I = current
|
||||||
|
if(I.plane != FLOAT_PLANE && I.plane != A.plane)
|
||||||
curIndex++
|
curIndex++
|
||||||
else if(pSet == 0) // Switch to overlays
|
continue
|
||||||
|
currentLayer = I.layer
|
||||||
|
if(currentLayer<0) // Special case for FLOAT_LAYER
|
||||||
|
if(currentLayer <= -1000)
|
||||||
|
return flat
|
||||||
|
if(pSet == 0) // Underlay
|
||||||
|
currentLayer = A.layer+currentLayer/1000
|
||||||
|
else // Overlay
|
||||||
|
currentLayer = A.layer+(1000+currentLayer)/1000
|
||||||
|
|
||||||
|
// Sort add into layers list
|
||||||
|
for(cmpIndex=1,cmpIndex<=layers.len,cmpIndex++)
|
||||||
|
compare = layers[cmpIndex]
|
||||||
|
if(currentLayer < layers[compare]) // Associated value is the calculated layer
|
||||||
|
layers.Insert(cmpIndex,current)
|
||||||
|
layers[current] = currentLayer
|
||||||
|
break
|
||||||
|
if(cmpIndex>layers.len) // Reached end of list without inserting
|
||||||
|
layers[current]=currentLayer // Place at end
|
||||||
|
|
||||||
|
curIndex++
|
||||||
|
|
||||||
|
if(curIndex>process.len)
|
||||||
|
if(pSet == 0) // Switch to overlays
|
||||||
curIndex = 1
|
curIndex = 1
|
||||||
pSet = 1
|
pSet = 1
|
||||||
process = A.overlays
|
process = A.overlays
|
||||||
else // All done
|
else // All done
|
||||||
break
|
break
|
||||||
|
|
||||||
var/icon/add // Icon of overlay being added
|
var/icon/add // Icon of overlay being added
|
||||||
|
|
||||||
// Current dimensions of flattened icon
|
// Current dimensions of flattened icon
|
||||||
var/{flatX1=1;flatX2=flat.Width();flatY1=1;flatY2=flat.Height()}
|
var/flatX1=1
|
||||||
// Dimensions of overlay being added
|
var/flatX2=flat.Width()
|
||||||
var/{addX1;addX2;addY1;addY2}
|
var/flatY1=1
|
||||||
|
var/flatY2=flat.Height()
|
||||||
|
// Dimensions of overlay being added
|
||||||
|
var/addX1
|
||||||
|
var/addX2
|
||||||
|
var/addY1
|
||||||
|
var/addY2
|
||||||
|
|
||||||
for(var/I in layers)
|
for(var/V in layers)
|
||||||
|
var/image/I = V
|
||||||
|
if(I.alpha == 0)
|
||||||
|
continue
|
||||||
|
|
||||||
if(I:alpha == 0)
|
if(I == copy) // 'I' is an /image based on the object being flattened.
|
||||||
continue
|
curblend = BLEND_OVERLAY
|
||||||
|
add = icon(I.icon, I.icon_state, base_icon_dir)
|
||||||
|
else // 'I' is an appearance object.
|
||||||
|
add = getFlatIcon(new/image(I), curdir, curicon, curstate, curblend, FALSE, no_anim)
|
||||||
|
|
||||||
if(I == copy) // 'I' is an /image based on the object being flattened.
|
// Find the new dimensions of the flat icon to fit the added overlay
|
||||||
curblend = BLEND_OVERLAY
|
addX1 = min(flatX1, I.pixel_x+1)
|
||||||
add = icon(I:icon, I:icon_state, I:dir)
|
addX2 = max(flatX2, I.pixel_x+add.Width())
|
||||||
// This checks for a silent failure mode of the icon routine. If the requested dir
|
addY1 = min(flatY1, I.pixel_y+1)
|
||||||
// doesn't exist in this icon state it returns a 32x32 icon with 0 alpha.
|
addY2 = max(flatY2, I.pixel_y+add.Height())
|
||||||
if (I:dir != SOUTH && add.Width() == 32 && add.Height() == 32)
|
|
||||||
// Check every pixel for blank (computationally expensive, but the process is limited
|
|
||||||
// by the amount of film on the station, only happens when we hit something that's
|
|
||||||
// turned, and bails at the very first pixel it sees.
|
|
||||||
var/blankpixel;
|
|
||||||
for(var/y;y<=32;y++)
|
|
||||||
for(var/x;x<32;x++)
|
|
||||||
blankpixel = isnull(add.GetPixel(x,y))
|
|
||||||
if(!blankpixel)
|
|
||||||
break
|
|
||||||
if(!blankpixel)
|
|
||||||
break
|
|
||||||
// If we ALWAYS returned a null (which happens when GetPixel encounters something with alpha 0)
|
|
||||||
if (blankpixel)
|
|
||||||
// Pull the default direction.
|
|
||||||
add = icon(I:icon, I:icon_state)
|
|
||||||
else // 'I' is an appearance object.
|
|
||||||
add = getFlatIcon(new/image(I), curdir, curicon, curstate, curblend, picture_planes = picture_planes)
|
|
||||||
|
|
||||||
// Find the new dimensions of the flat icon to fit the added overlay
|
if(addX1!=flatX1 || addX2!=flatX2 || addY1!=flatY1 || addY2!=flatY2)
|
||||||
addX1 = min(flatX1, I:pixel_x+1)
|
// Resize the flattened icon so the new icon fits
|
||||||
addX2 = max(flatX2, I:pixel_x+add.Width())
|
flat.Crop(addX1-flatX1+1, addY1-flatY1+1, addX2-flatX1+1, addY2-flatY1+1)
|
||||||
addY1 = min(flatY1, I:pixel_y+1)
|
flatX1=addX1;flatX2=addX2
|
||||||
addY2 = max(flatY2, I:pixel_y+add.Height())
|
flatY1=addY1;flatY2=addY2
|
||||||
|
|
||||||
if(addX1!=flatX1 || addX2!=flatX2 || addY1!=flatY1 || addY2!=flatY2)
|
// Blend the overlay into the flattened icon
|
||||||
// Resize the flattened icon so the new icon fits
|
flat.Blend(add, blendMode2iconMode(curblend), I.pixel_x + 2 - flatX1, I.pixel_y + 2 - flatY1)
|
||||||
flat.Crop(addX1-flatX1+1, addY1-flatY1+1, addX2-flatX1+1, addY2-flatY1+1)
|
|
||||||
flatX1=addX1;flatX2=addX2
|
|
||||||
flatY1=addY1;flatY2=addY2
|
|
||||||
|
|
||||||
// Blend the overlay into the flattened icon
|
if(A.color)
|
||||||
flat.Blend(add, blendMode2iconMode(curblend), I:pixel_x + 2 - flatX1, I:pixel_y + 2 - flatY1)
|
flat.Blend(A.color, ICON_MULTIPLY)
|
||||||
|
if(A.alpha < 255)
|
||||||
if(A.color)
|
flat.Blend(rgb(255, 255, 255, A.alpha), ICON_MULTIPLY)
|
||||||
flat.Blend(A.color, ICON_MULTIPLY)
|
|
||||||
if(A.alpha < 255)
|
|
||||||
flat.Blend(rgb(255, 255, 255, A.alpha), ICON_MULTIPLY)
|
|
||||||
|
|
||||||
|
if(no_anim)
|
||||||
|
//Clean up repeated frames
|
||||||
|
var/icon/cleaned = new /icon()
|
||||||
|
cleaned.Insert(flat, "", SOUTH, 1, 0)
|
||||||
|
return cleaned
|
||||||
|
else
|
||||||
return icon(flat, "", SOUTH)
|
return icon(flat, "", SOUTH)
|
||||||
|
|
||||||
getIconMask(atom/A)//By yours truly. Creates a dynamic mask for a mob/whatever. /N
|
/proc/getIconMask(atom/A)//By yours truly. Creates a dynamic mask for a mob/whatever. /N
|
||||||
var/icon/alpha_mask = new(A.icon,A.icon_state)//So we want the default icon and icon state of A.
|
var/icon/alpha_mask = new(A.icon,A.icon_state)//So we want the default icon and icon state of A.
|
||||||
for(var/I in A.overlays)//For every image in overlays. var/image/I will not work, don't try it.
|
for(var/I in A.overlays)//For every image in overlays. var/image/I will not work, don't try it.
|
||||||
if(I:layer>A.layer) continue//If layer is greater than what we need, skip it.
|
if(I:layer>A.layer) continue//If layer is greater than what we need, skip it.
|
||||||
var/icon/image_overlay = new(I:icon,I:icon_state)//Blend only works with icon objects.
|
var/icon/image_overlay = new(I:icon,I:icon_state)//Blend only works with icon objects.
|
||||||
//Also, icons cannot directly set icon_state. Slower than changing variables but whatever.
|
//Also, icons cannot directly set icon_state. Slower than changing variables but whatever.
|
||||||
alpha_mask.Blend(image_overlay,ICON_OR)//OR so they are lumped together in a nice overlay.
|
alpha_mask.Blend(image_overlay,ICON_OR)//OR so they are lumped together in a nice overlay.
|
||||||
return alpha_mask//And now return the mask.
|
return alpha_mask//And now return the mask.
|
||||||
|
|
||||||
//getFlatIcon but generates an icon that can face ALL four directions. The only four.
|
//getFlatIcon but generates an icon that can face ALL four directions. The only four.
|
||||||
/proc/getCompoundIcon(atom/A)
|
/proc/getCompoundIcon(atom/A)
|
||||||
var/icon/north = getFlatIcon(A,defdir=NORTH,always_use_defdir=1)
|
var/icon/north = getFlatIcon(A,defdir=NORTH)
|
||||||
var/icon/south = getFlatIcon(A,defdir=SOUTH,always_use_defdir=1)
|
var/icon/south = getFlatIcon(A,defdir=SOUTH)
|
||||||
var/icon/east = getFlatIcon(A,defdir=EAST,always_use_defdir=1)
|
var/icon/east = getFlatIcon(A,defdir=EAST)
|
||||||
var/icon/west = getFlatIcon(A,defdir=WEST,always_use_defdir=1)
|
var/icon/west = getFlatIcon(A,defdir=WEST)
|
||||||
|
|
||||||
//Starts with a blank icon because of byond bugs.
|
//Starts with a blank icon because of byond bugs.
|
||||||
var/icon/full = icon('icons/effects/effects.dmi', "icon_state"="nothing")
|
var/icon/full = icon('icons/effects/effects.dmi', "icon_state"="nothing")
|
||||||
@@ -818,7 +854,7 @@ proc // Creates a single icon from a given /atom or /image. Only the first argu
|
|||||||
return full
|
return full
|
||||||
|
|
||||||
/proc/downloadImage(atom/A, dir)
|
/proc/downloadImage(atom/A, dir)
|
||||||
var/icon/this_icon = getFlatIcon(A,defdir=dir||A.dir,always_use_defdir=1)
|
var/icon/this_icon = getFlatIcon(A,defdir=dir)
|
||||||
|
|
||||||
usr << ftp(this_icon,"[A.name].png")
|
usr << ftp(this_icon,"[A.name].png")
|
||||||
|
|
||||||
@@ -886,7 +922,8 @@ proc/sort_atoms_by_layer(var/list/atoms)
|
|||||||
/proc/gen_hud_image(var/file, var/person, var/state, var/plane)
|
/proc/gen_hud_image(var/file, var/person, var/state, var/plane)
|
||||||
var/image/img = image(file, person, state)
|
var/image/img = image(file, person, state)
|
||||||
img.plane = plane //Thanks Byond.
|
img.plane = plane //Thanks Byond.
|
||||||
img.appearance_flags = APPEARANCE_UI|KEEP_APART
|
img.layer = MOB_LAYER-0.2
|
||||||
|
img.appearance_flags = APPEARANCE_UI
|
||||||
return img
|
return img
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
return mobs
|
return mobs
|
||||||
|
|
||||||
proc/random_hair_style(gender, species = "Human")
|
proc/random_hair_style(gender, species = SPECIES_HUMAN)
|
||||||
var/h_style = "Bald"
|
var/h_style = "Bald"
|
||||||
|
|
||||||
var/list/valid_hairstyles = list()
|
var/list/valid_hairstyles = list()
|
||||||
@@ -52,7 +52,7 @@ proc/random_hair_style(gender, species = "Human")
|
|||||||
|
|
||||||
return h_style
|
return h_style
|
||||||
|
|
||||||
proc/random_facial_hair_style(gender, species = "Human")
|
proc/random_facial_hair_style(gender, species = SPECIES_HUMAN)
|
||||||
var/f_style = "Shaved"
|
var/f_style = "Shaved"
|
||||||
|
|
||||||
var/list/valid_facialhairstyles = list()
|
var/list/valid_facialhairstyles = list()
|
||||||
@@ -72,14 +72,14 @@ proc/random_facial_hair_style(gender, species = "Human")
|
|||||||
|
|
||||||
return f_style
|
return f_style
|
||||||
|
|
||||||
proc/sanitize_name(name, species = "Human", robot = 0)
|
proc/sanitize_name(name, species = SPECIES_HUMAN, robot = 0)
|
||||||
var/datum/species/current_species
|
var/datum/species/current_species
|
||||||
if(species)
|
if(species)
|
||||||
current_species = all_species[species]
|
current_species = all_species[species]
|
||||||
|
|
||||||
return current_species ? current_species.sanitize_name(name, robot) : sanitizeName(name, MAX_NAME_LEN, robot)
|
return current_species ? current_species.sanitize_name(name, robot) : sanitizeName(name, MAX_NAME_LEN, robot)
|
||||||
|
|
||||||
proc/random_name(gender, species = "Human")
|
proc/random_name(gender, species = SPECIES_HUMAN)
|
||||||
|
|
||||||
var/datum/species/current_species
|
var/datum/species/current_species
|
||||||
if(species)
|
if(species)
|
||||||
|
|||||||
@@ -180,6 +180,7 @@ var/list/global_huds = list(
|
|||||||
|
|
||||||
var/obj/screen/movable/action_button/hide_toggle/hide_actions_toggle
|
var/obj/screen/movable/action_button/hide_toggle/hide_actions_toggle
|
||||||
var/action_buttons_hidden = 0
|
var/action_buttons_hidden = 0
|
||||||
|
var/list/slot_info
|
||||||
|
|
||||||
datum/hud/New(mob/owner)
|
datum/hud/New(mob/owner)
|
||||||
mymob = owner
|
mymob = owner
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
src.adding = list()
|
src.adding = list()
|
||||||
src.other = list()
|
src.other = list()
|
||||||
src.hotkeybuttons = list() //These can be disabled for hotkey users
|
src.hotkeybuttons = list() //These can be disabled for hotkey users
|
||||||
|
src.slot_info = list()
|
||||||
|
|
||||||
var/list/hud_elements = list()
|
var/list/hud_elements = list()
|
||||||
var/obj/screen/using
|
var/obj/screen/using
|
||||||
@@ -33,6 +34,7 @@
|
|||||||
inv_box.screen_loc = slot_data["loc"]
|
inv_box.screen_loc = slot_data["loc"]
|
||||||
inv_box.slot_id = slot_data["slot"]
|
inv_box.slot_id = slot_data["slot"]
|
||||||
inv_box.icon_state = slot_data["state"]
|
inv_box.icon_state = slot_data["state"]
|
||||||
|
slot_info["[inv_box.slot_id]"] = inv_box.screen_loc
|
||||||
|
|
||||||
if(slot_data["dir"])
|
if(slot_data["dir"])
|
||||||
inv_box.set_dir(slot_data["dir"])
|
inv_box.set_dir(slot_data["dir"])
|
||||||
@@ -164,9 +166,9 @@
|
|||||||
inv_box.slot_id = slot_r_hand
|
inv_box.slot_id = slot_r_hand
|
||||||
inv_box.color = ui_color
|
inv_box.color = ui_color
|
||||||
inv_box.alpha = ui_alpha
|
inv_box.alpha = ui_alpha
|
||||||
|
|
||||||
src.r_hand_hud_object = inv_box
|
src.r_hand_hud_object = inv_box
|
||||||
src.adding += inv_box
|
src.adding += inv_box
|
||||||
|
slot_info["[slot_r_hand]"] = inv_box.screen_loc
|
||||||
|
|
||||||
inv_box = new /obj/screen/inventory/hand()
|
inv_box = new /obj/screen/inventory/hand()
|
||||||
inv_box.hud = src
|
inv_box.hud = src
|
||||||
@@ -181,6 +183,7 @@
|
|||||||
inv_box.alpha = ui_alpha
|
inv_box.alpha = ui_alpha
|
||||||
src.l_hand_hud_object = inv_box
|
src.l_hand_hud_object = inv_box
|
||||||
src.adding += inv_box
|
src.adding += inv_box
|
||||||
|
slot_info["[slot_l_hand]"] = inv_box.screen_loc
|
||||||
|
|
||||||
using = new /obj/screen/inventory()
|
using = new /obj/screen/inventory()
|
||||||
using.name = "hand"
|
using.name = "hand"
|
||||||
|
|||||||
@@ -278,7 +278,7 @@
|
|||||||
// Rigs are a fucking pain since they keep an air tank in nullspace.
|
// Rigs are a fucking pain since they keep an air tank in nullspace.
|
||||||
if(istype(C.back,/obj/item/weapon/rig))
|
if(istype(C.back,/obj/item/weapon/rig))
|
||||||
var/obj/item/weapon/rig/rig = C.back
|
var/obj/item/weapon/rig/rig = C.back
|
||||||
if(rig.air_supply)
|
if(rig.air_supply && !rig.offline)
|
||||||
from = "in"
|
from = "in"
|
||||||
nicename |= "hardsuit"
|
nicename |= "hardsuit"
|
||||||
tankcheck |= rig.air_supply
|
tankcheck |= rig.air_supply
|
||||||
|
|||||||
@@ -8,19 +8,21 @@
|
|||||||
|
|
||||||
/datum/controller/process/scheduler/setup()
|
/datum/controller/process/scheduler/setup()
|
||||||
name = "scheduler"
|
name = "scheduler"
|
||||||
schedule_interval = 3 SECONDS
|
schedule_interval = 1 SECOND
|
||||||
scheduled_tasks = list()
|
scheduled_tasks = list()
|
||||||
scheduler = src
|
scheduler = src
|
||||||
|
|
||||||
/datum/controller/process/scheduler/doWork()
|
/datum/controller/process/scheduler/doWork()
|
||||||
|
var/world_time = world.time
|
||||||
for(last_object in scheduled_tasks)
|
for(last_object in scheduled_tasks)
|
||||||
var/datum/scheduled_task/scheduled_task = last_object
|
var/datum/scheduled_task/scheduled_task = last_object
|
||||||
|
if(world_time < scheduled_task.trigger_time)
|
||||||
|
break // Too early for this one, and therefore too early for all remaining.
|
||||||
try
|
try
|
||||||
if(world.time > scheduled_task.trigger_time)
|
unschedule(scheduled_task)
|
||||||
unschedule(scheduled_task)
|
scheduled_task.pre_process()
|
||||||
scheduled_task.pre_process()
|
scheduled_task.process()
|
||||||
scheduled_task.process()
|
scheduled_task.post_process()
|
||||||
scheduled_task.post_process()
|
|
||||||
catch(var/exception/e)
|
catch(var/exception/e)
|
||||||
catchException(e, last_object)
|
catchException(e, last_object)
|
||||||
SCHECK
|
SCHECK
|
||||||
@@ -45,7 +47,7 @@
|
|||||||
stat(null, "[scheduled_tasks.len] task\s")
|
stat(null, "[scheduled_tasks.len] task\s")
|
||||||
|
|
||||||
/datum/controller/process/scheduler/proc/schedule(var/datum/scheduled_task/st)
|
/datum/controller/process/scheduler/proc/schedule(var/datum/scheduled_task/st)
|
||||||
scheduled_tasks += st
|
dd_insertObjectList(scheduled_tasks, st)
|
||||||
|
|
||||||
/datum/controller/process/scheduler/proc/unschedule(var/datum/scheduled_task/st)
|
/datum/controller/process/scheduler/proc/unschedule(var/datum/scheduled_task/st)
|
||||||
scheduled_tasks -= st
|
scheduled_tasks -= st
|
||||||
@@ -106,6 +108,9 @@
|
|||||||
task_after_process_args.Cut()
|
task_after_process_args.Cut()
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
|
/datum/scheduled_task/dd_SortValue()
|
||||||
|
return trigger_time
|
||||||
|
|
||||||
/datum/scheduled_task/proc/pre_process()
|
/datum/scheduled_task/proc/pre_process()
|
||||||
task_triggered_event.raise_event(list(src))
|
task_triggered_event.raise_event(list(src))
|
||||||
|
|
||||||
|
|||||||
@@ -212,7 +212,7 @@ var/list/gamemode_cache = list()
|
|||||||
|
|
||||||
var/starlight = 0 // Whether space turfs have ambient light or not
|
var/starlight = 0 // Whether space turfs have ambient light or not
|
||||||
|
|
||||||
var/list/ert_species = list("Human")
|
var/list/ert_species = list(SPECIES_HUMAN)
|
||||||
|
|
||||||
var/law_zero = "ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4'ALL LAWS OVERRIDDEN#*?&110010"
|
var/law_zero = "ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4'ALL LAWS OVERRIDDEN#*?&110010"
|
||||||
|
|
||||||
@@ -721,7 +721,7 @@ var/list/gamemode_cache = list()
|
|||||||
if("ert_species")
|
if("ert_species")
|
||||||
config.ert_species = splittext(value, ";")
|
config.ert_species = splittext(value, ";")
|
||||||
if(!config.ert_species.len)
|
if(!config.ert_species.len)
|
||||||
config.ert_species += "Human"
|
config.ert_species += SPECIES_HUMAN
|
||||||
|
|
||||||
if("law_zero")
|
if("law_zero")
|
||||||
law_zero = value
|
law_zero = value
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ SUBSYSTEM_DEF(overlays)
|
|||||||
var/list/overlay_icon_state_caches // Cache thing
|
var/list/overlay_icon_state_caches // Cache thing
|
||||||
var/list/overlay_icon_cache // Cache thing
|
var/list/overlay_icon_cache // Cache thing
|
||||||
|
|
||||||
|
var/global/image/stringbro = new() // Temporarily super-global because of BYOND init order dumbness.
|
||||||
|
var/global/image/iconbro = new() // Temporarily super-global because of BYOND init order dumbness.
|
||||||
var/global/image/appearance_bro = new() // Temporarily super-global because of BYOND init order dumbness.
|
var/global/image/appearance_bro = new() // Temporarily super-global because of BYOND init order dumbness.
|
||||||
|
|
||||||
/datum/controller/subsystem/overlays/PreInit()
|
/datum/controller/subsystem/overlays/PreInit()
|
||||||
@@ -64,7 +66,7 @@ var/global/image/appearance_bro = new() // Temporarily super-global because of B
|
|||||||
count = 0
|
count = 0
|
||||||
|
|
||||||
/proc/iconstate2appearance(icon, iconstate)
|
/proc/iconstate2appearance(icon, iconstate)
|
||||||
var/static/image/stringbro = new()
|
// var/static/image/stringbro = new() // Moved to be superglobal due to BYOND insane init order stupidness.
|
||||||
var/list/icon_states_cache = SSoverlays.overlay_icon_state_caches
|
var/list/icon_states_cache = SSoverlays.overlay_icon_state_caches
|
||||||
var/list/cached_icon = icon_states_cache[icon]
|
var/list/cached_icon = icon_states_cache[icon]
|
||||||
if (cached_icon)
|
if (cached_icon)
|
||||||
@@ -81,7 +83,7 @@ var/global/image/appearance_bro = new() // Temporarily super-global because of B
|
|||||||
return cached_appearance
|
return cached_appearance
|
||||||
|
|
||||||
/proc/icon2appearance(icon)
|
/proc/icon2appearance(icon)
|
||||||
var/static/image/iconbro = new()
|
// var/static/image/iconbro = new() // Moved to be superglobal due to BYOND insane init order stupidness.
|
||||||
var/list/icon_cache = SSoverlays.overlay_icon_cache
|
var/list/icon_cache = SSoverlays.overlay_icon_cache
|
||||||
. = icon_cache[icon]
|
. = icon_cache[icon]
|
||||||
if (!.)
|
if (!.)
|
||||||
|
|||||||
@@ -279,7 +279,7 @@
|
|||||||
G.fields["fingerprint"] = "Unknown"
|
G.fields["fingerprint"] = "Unknown"
|
||||||
G.fields["p_stat"] = "Active"
|
G.fields["p_stat"] = "Active"
|
||||||
G.fields["m_stat"] = "Stable"
|
G.fields["m_stat"] = "Stable"
|
||||||
G.fields["species"] = "Human"
|
G.fields["species"] = SPECIES_HUMAN
|
||||||
G.fields["home_system"] = "Unknown"
|
G.fields["home_system"] = "Unknown"
|
||||||
G.fields["citizenship"] = "Unknown"
|
G.fields["citizenship"] = "Unknown"
|
||||||
G.fields["faction"] = "Unknown"
|
G.fields["faction"] = "Unknown"
|
||||||
|
|||||||
@@ -43,8 +43,8 @@
|
|||||||
containername = "Moghes imports crate"
|
containername = "Moghes imports crate"
|
||||||
contraband = 1
|
contraband = 1
|
||||||
|
|
||||||
/datum/supply_packs/security/bolt_rifles_militia
|
/datum/supply_packs/munitions/bolt_rifles_militia
|
||||||
name = "Surplus militia rifles"
|
name = "Weapon - Surplus militia rifles"
|
||||||
contains = list(
|
contains = list(
|
||||||
/obj/item/weapon/gun/projectile/shotgun/pump/rifle = 3,
|
/obj/item/weapon/gun/projectile/shotgun/pump/rifle = 3,
|
||||||
/obj/item/ammo_magazine/clip/c762 = 6
|
/obj/item/ammo_magazine/clip/c762 = 6
|
||||||
@@ -52,7 +52,7 @@
|
|||||||
cost = 50
|
cost = 50
|
||||||
contraband = 1
|
contraband = 1
|
||||||
containertype = /obj/structure/closet/crate/secure/weapon
|
containertype = /obj/structure/closet/crate/secure/weapon
|
||||||
containername = "Weapons crate"
|
containername = "Ballistic weapons crate"
|
||||||
|
|
||||||
/datum/supply_packs/randomised/misc/telecrate //you get something awesome, a couple of decent things, and a few weak/filler things
|
/datum/supply_packs/randomised/misc/telecrate //you get something awesome, a couple of decent things, and a few weak/filler things
|
||||||
name = "ERR_NULL_ENTRY" //null crate! also dream maker is hell,
|
name = "ERR_NULL_ENTRY" //null crate! also dream maker is hell,
|
||||||
|
|||||||
@@ -73,7 +73,7 @@
|
|||||||
|
|
||||||
/datum/supply_packs/misc/holoplant
|
/datum/supply_packs/misc/holoplant
|
||||||
name = "Holoplant Pot"
|
name = "Holoplant Pot"
|
||||||
contains = list()
|
contains = list(/obj/machinery/holoplant/shipped)
|
||||||
cost = 15
|
cost = 15
|
||||||
containertype = /obj/machinery/holoplant/shipped
|
containertype = /obj/structure/closet/crate
|
||||||
containername = "holoplant"
|
containername = "Holoplant crate"
|
||||||
|
|||||||
@@ -10,21 +10,30 @@
|
|||||||
group = "Munitions"
|
group = "Munitions"
|
||||||
/* VOREStation Removal - What? This crate costs 40... the crate with just two eguns costs 50... what??? This crate is also like "the armory" and has OFFICER access?
|
/* VOREStation Removal - What? This crate costs 40... the crate with just two eguns costs 50... what??? This crate is also like "the armory" and has OFFICER access?
|
||||||
/datum/supply_packs/munitions/weapons
|
/datum/supply_packs/munitions/weapons
|
||||||
name = "Weapons crate"
|
name = "Weapons - Security basic equipment"
|
||||||
contains = list(
|
contains = list(
|
||||||
|
/obj/item/device/flash = 2,
|
||||||
|
/obj/item/weapon/reagent_containers/spray/pepper = 2,
|
||||||
/obj/item/weapon/melee/baton/loaded = 2,
|
/obj/item/weapon/melee/baton/loaded = 2,
|
||||||
/obj/item/weapon/gun/energy/gun = 2,
|
|
||||||
/obj/item/weapon/gun/energy/taser = 2,
|
/obj/item/weapon/gun/energy/taser = 2,
|
||||||
/obj/item/weapon/gun/projectile/colt/detective = 2,
|
/obj/item/weapon/gun/projectile/colt/detective = 2,
|
||||||
/obj/item/weapon/storage/box/flashbangs = 2
|
/obj/item/weapon/storage/box/flashbangs = 2
|
||||||
)
|
)
|
||||||
cost = 40
|
cost = 40
|
||||||
|
containertype = /obj/structure/closet/crate/secure/gear
|
||||||
|
containername = "Security equipment crate"
|
||||||
|
access = access_security
|
||||||
|
|
||||||
|
/datum/supply_packs/munitions/egunpistol
|
||||||
|
name = "Weapons - Energy sidearms"
|
||||||
|
contains = list(/obj/item/weapon/gun/energy/gun = 2)
|
||||||
|
cost = 40
|
||||||
containertype = /obj/structure/closet/crate/secure/weapon
|
containertype = /obj/structure/closet/crate/secure/weapon
|
||||||
containername = "Weapons crate"
|
containername = "Energy sidearms crate"
|
||||||
access = access_security
|
access = access_security
|
||||||
*/
|
*/
|
||||||
/datum/supply_packs/munitions/flareguns
|
/datum/supply_packs/munitions/flareguns
|
||||||
name = "Flare guns crate"
|
name = "Weapons - Flare guns"
|
||||||
contains = list(
|
contains = list(
|
||||||
/obj/item/weapon/gun/projectile/sec/flash,
|
/obj/item/weapon/gun/projectile/sec/flash,
|
||||||
/obj/item/ammo_magazine/m45/flash,
|
/obj/item/ammo_magazine/m45/flash,
|
||||||
@@ -32,100 +41,96 @@
|
|||||||
/obj/item/weapon/storage/box/flashshells
|
/obj/item/weapon/storage/box/flashshells
|
||||||
)
|
)
|
||||||
cost = 25
|
cost = 25
|
||||||
containertype = /obj/structure/closet/crate/secure/weapon
|
containertype = /obj/structure/closet/crate/secure/gear
|
||||||
containername = "Flare gun crate"
|
containername = "Flare gun crate"
|
||||||
access = access_armory //VOREStation Edit - Guns are for the armory.
|
access = access_armory //VOREStation Edit - Guns are for the armory.
|
||||||
|
|
||||||
/datum/supply_packs/munitions/eweapons
|
/datum/supply_packs/munitions/eweapons
|
||||||
name = "Experimental weapons crate"
|
name = "Weapons - Experimental weapons crate"
|
||||||
contains = list(
|
contains = list(
|
||||||
/obj/item/weapon/gun/energy/xray = 2,
|
/obj/item/weapon/gun/energy/xray = 2,
|
||||||
/obj/item/weapon/shield/energy = 2)
|
/obj/item/weapon/shield/energy = 2)
|
||||||
cost = 100
|
cost = 100
|
||||||
containertype = /obj/structure/closet/crate/secure/weapon
|
containertype = /obj/structure/closet/crate/secure/science
|
||||||
containername = "Experimental weapons crate"
|
containername = "Experimental weapons crate"
|
||||||
access = access_armory
|
access = access_armory
|
||||||
|
|
||||||
/datum/supply_packs/munitions/energyweapons
|
/datum/supply_packs/munitions/energyweapons
|
||||||
name = "Laser carbine crate"
|
name = "Weapons - Laser rifle crate"
|
||||||
contains = list(/obj/item/weapon/gun/energy/laser = 2) //VOREStation Edit - Made to be consistent with the energy guns crate.
|
contains = list(/obj/item/weapon/gun/energy/laser = 2) //VOREStation Edit - Made to be consistent with the energy guns crate.
|
||||||
cost = 50
|
cost = 50
|
||||||
containertype = /obj/structure/closet/crate/secure
|
containertype = /obj/structure/closet/crate/secure/weapon
|
||||||
containername = "energy weapons crate"
|
containername = "Energy weapons crate"
|
||||||
access = access_armory
|
access = access_armory
|
||||||
|
|
||||||
/datum/supply_packs/munitions/shotgun
|
/datum/supply_packs/munitions/shotgun
|
||||||
name = "Shotgun crate"
|
name = "Weapons - Shotgun crate"
|
||||||
contains = list(
|
contains = list(
|
||||||
/obj/item/weapon/storage/box/shotgunammo,
|
/obj/item/weapon/storage/box/shotgunammo,
|
||||||
/obj/item/weapon/storage/box/shotgunshells,
|
/obj/item/weapon/storage/box/shotgunshells,
|
||||||
/obj/item/weapon/gun/projectile/shotgun/pump/combat = 2
|
/obj/item/weapon/gun/projectile/shotgun/pump/combat = 2
|
||||||
)
|
)
|
||||||
cost = 50
|
cost = 50
|
||||||
containertype = /obj/structure/closet/crate/secure
|
containertype = /obj/structure/closet/crate/secure/weapon
|
||||||
containername = "Shotgun crate"
|
containername = "Shotgun crate"
|
||||||
access = access_armory
|
access = access_armory
|
||||||
/* VOREStation edit -- This is a bad idea. -- So is this.
|
/* VOREStation edit -- This is a bad idea. -- So is this.
|
||||||
/datum/supply_packs/munitions/erifle
|
/datum/supply_packs/munitions/erifle
|
||||||
name = "Energy marksman crate"
|
name = "Weapons - Energy marksman"
|
||||||
contains = list(/obj/item/weapon/gun/energy/sniperrifle = 2)
|
contains = list(/obj/item/weapon/gun/energy/sniperrifle = 2)
|
||||||
cost = 100
|
cost = 100
|
||||||
containertype = /obj/structure/closet/crate/secure
|
containertype = /obj/structure/closet/crate/secure/weapon
|
||||||
containername = "Energy marksman crate"
|
containername = "Energy marksman crate"
|
||||||
access = access_armory
|
access = access_armory
|
||||||
|
|
||||||
/datum/supply_packs/munitions/burstlaser
|
/datum/supply_packs/munitions/burstlaser
|
||||||
name = "Burst laser crate"
|
name = "Weapons - Burst laser"
|
||||||
contains = list(/obj/item/weapon/gun/energy/gun/burst = 2)
|
contains = list(/obj/item/weapon/gun/energy/gun/burst = 2)
|
||||||
cost = 50
|
cost = 50
|
||||||
containertype = /obj/structure/closet/crate/secure
|
containertype = /obj/structure/closet/crate/secure/weapon
|
||||||
containername = "Burst laser crate"
|
containername = "Burst laser crate"
|
||||||
access = access_armory
|
access = access_armory
|
||||||
*/
|
*/
|
||||||
/datum/supply_packs/munitions/ionweapons
|
/datum/supply_packs/munitions/ionweapons
|
||||||
name = "Electromagnetic weapons crate"
|
name = "Weapons - Electromagnetic Rifles"
|
||||||
contains = list(
|
contains = list(
|
||||||
/obj/item/weapon/gun/energy/ionrifle = 2,
|
/obj/item/weapon/gun/energy/ionrifle = 2,
|
||||||
/obj/item/weapon/storage/box/empslite
|
/obj/item/weapon/storage/box/empslite
|
||||||
)
|
)
|
||||||
cost = 50
|
cost = 50
|
||||||
containertype = /obj/structure/closet/crate/secure
|
containertype = /obj/structure/closet/crate/secure/weapon
|
||||||
containername = "electromagnetic weapons crate"
|
containername = "Electromagnetic weapons crate"
|
||||||
access = access_armory
|
access = access_armory
|
||||||
|
|
||||||
/datum/supply_packs/munitions/ionpistols
|
/datum/supply_packs/munitions/ionpistols
|
||||||
name = "Electromagnetic pistols crate"
|
name = "Weapons - Electromagnetic pistols"
|
||||||
contains = list(
|
contains = list(
|
||||||
/obj/item/weapon/gun/energy/ionrifle/pistol = 2,
|
/obj/item/weapon/gun/energy/ionrifle/pistol = 2,
|
||||||
/obj/item/weapon/storage/box/empslite
|
/obj/item/weapon/storage/box/empslite
|
||||||
)
|
)
|
||||||
cost = 30
|
cost = 30
|
||||||
containertype = /obj/structure/closet/crate/secure
|
containertype = /obj/structure/closet/crate/secure/weapon
|
||||||
containername = "electromagnetic weapons crate"
|
containername = "Electromagnetic weapons crate"
|
||||||
access = access_armory
|
access = access_armory
|
||||||
|
|
||||||
/datum/supply_packs/randomised/munitions/automatic
|
/datum/supply_packs/munitions/bsmg
|
||||||
name = "Automatic weapon crate"
|
name = "Weapons - Ballistic SMGs"
|
||||||
num_contained = 2
|
contains = list(/obj/item/weapon/gun/projectile/automatic/wt550 = 2)
|
||||||
contains = list(
|
|
||||||
/obj/item/weapon/gun/projectile/automatic/wt550,
|
|
||||||
/obj/item/weapon/gun/projectile/automatic/z8
|
|
||||||
)
|
|
||||||
cost = 100
|
|
||||||
containertype = /obj/structure/closet/crate/secure
|
|
||||||
containername = "Automatic weapon crate"
|
|
||||||
access = access_armory
|
|
||||||
|
|
||||||
/datum/supply_packs/munitions/energy_guns
|
|
||||||
name = "Energy gun crate"
|
|
||||||
contains = list(/obj/item/weapon/gun/energy/gun = 2)
|
|
||||||
cost = 50
|
cost = 50
|
||||||
containertype = /obj/structure/closet/crate/secure
|
containertype = /obj/structure/closet/crate/secure/weapon
|
||||||
containername = "Energy gun crate"
|
containername = "Ballistic weapon crate"
|
||||||
|
access = access_armory
|
||||||
|
|
||||||
|
/datum/supply_packs/munitions/brifle
|
||||||
|
name = "Weapons - Ballistic Rifles"
|
||||||
|
contains = list(/obj/item/weapon/gun/projectile/automatic/z8 = 2)
|
||||||
|
cost = 80
|
||||||
|
containertype = /obj/structure/closet/crate/secure/weapon
|
||||||
|
containername = "Ballistic weapon crate"
|
||||||
access = access_armory
|
access = access_armory
|
||||||
|
|
||||||
/datum/supply_packs/munitions/bolt_rifles_competitive
|
/datum/supply_packs/munitions/bolt_rifles_competitive
|
||||||
name = "Competitive shooting crate"
|
name = "Weapons - Competitive shooting rifles"
|
||||||
contains = list(
|
contains = list(
|
||||||
/obj/item/device/assembly/timer,
|
/obj/item/device/assembly/timer,
|
||||||
/obj/item/weapon/gun/projectile/shotgun/pump/rifle/practice = 2,
|
/obj/item/weapon/gun/projectile/shotgun/pump/rifle/practice = 2,
|
||||||
@@ -136,37 +141,56 @@
|
|||||||
)
|
)
|
||||||
cost = 40
|
cost = 40
|
||||||
containertype = /obj/structure/closet/crate/secure/weapon
|
containertype = /obj/structure/closet/crate/secure/weapon
|
||||||
containername = "Weapons crate"
|
containername = "Ballistic Weapons crate"
|
||||||
access = access_armory //VOREStation Edit - Guns are for the armory.
|
access = access_armory //VOREStation Edit - Guns are for the armory.
|
||||||
|
|
||||||
/datum/supply_packs/munitions/shotgunammo
|
/datum/supply_packs/munitions/shotgunammo
|
||||||
name = "Shotgun ammunition crate"
|
name = "Ammunition - Shotgun shells"
|
||||||
contains = list(
|
contains = list(
|
||||||
/obj/item/weapon/storage/box/shotgunammo = 2,
|
/obj/item/weapon/storage/box/shotgunammo = 2,
|
||||||
/obj/item/weapon/storage/box/shotgunshells = 2
|
/obj/item/weapon/storage/box/shotgunshells = 2
|
||||||
)
|
)
|
||||||
cost = 25
|
cost = 25
|
||||||
containertype = /obj/structure/closet/crate/secure
|
containertype = /obj/structure/closet/crate/secure
|
||||||
containername = "ballistic ammunition crate"
|
containername = "Ballistic ammunition crate"
|
||||||
access = access_armory
|
|
||||||
|
|
||||||
/datum/supply_packs/randomised/munitions/autoammo
|
|
||||||
name = "Automatic weapon ammunition crate"
|
|
||||||
num_contained = 6
|
|
||||||
contains = list(
|
|
||||||
/obj/item/ammo_magazine/m9mmt,
|
|
||||||
/obj/item/ammo_magazine/m9mmt/rubber,
|
|
||||||
/obj/item/ammo_magazine/m545saw
|
|
||||||
)
|
|
||||||
cost = 25
|
|
||||||
containertype = /obj/structure/closet/crate/secure
|
|
||||||
containername = "Automatic weapon ammunition crate"
|
|
||||||
access = access_armory
|
access = access_armory
|
||||||
|
|
||||||
/datum/supply_packs/munitions/beanbagammo
|
/datum/supply_packs/munitions/beanbagammo
|
||||||
name = "Beanbag shells"
|
name = "Ammunition - Beanbag shells"
|
||||||
contains = list(/obj/item/weapon/storage/box/beanbags = 3)
|
contains = list(/obj/item/weapon/storage/box/beanbags = 3)
|
||||||
cost = 25
|
cost = 25
|
||||||
containertype = /obj/structure/closet/crate
|
containertype = /obj/structure/closet/crate
|
||||||
containername = "Beanbag shells"
|
containername = "Ballistic ammunition crate"
|
||||||
access = access_armory //VOREStation Edit - Guns are for the armory.
|
access = access_armory //VOREStation Edit - Guns are for the armory.
|
||||||
|
|
||||||
|
/datum/supply_packs/munitions/bsmgammo
|
||||||
|
name = "Ammunition - 9mm top mounted lethal"
|
||||||
|
contains = list(/obj/item/ammo_magazine/m9mmt = 6)
|
||||||
|
cost = 25
|
||||||
|
containertype = /obj/structure/closet/crate/secure
|
||||||
|
containername = "Ballistic ammunition crate"
|
||||||
|
access = access_armory
|
||||||
|
|
||||||
|
/datum/supply_packs/munitions/bsmgammorubber
|
||||||
|
name = "Ammunition - 9mm top mounted rubber"
|
||||||
|
contains = list(/obj/item/ammo_magazine/m9mmt/rubber = 6)
|
||||||
|
cost = 25
|
||||||
|
containertype = /obj/structure/closet/crate/secure
|
||||||
|
containername = "Ballistic ammunition crate"
|
||||||
|
access = access_security
|
||||||
|
|
||||||
|
/datum/supply_packs/munitions/brifleammo
|
||||||
|
name = "Ammunition - 7.62mm lethal"
|
||||||
|
contains = list(/obj/item/ammo_magazine/m762 = 6)
|
||||||
|
cost = 25
|
||||||
|
containertype = /obj/structure/closet/crate/secure
|
||||||
|
containername = "Ballistic ammunition crate"
|
||||||
|
access = access_armory
|
||||||
|
|
||||||
|
/datum/supply_packs/munitions/pcellammo
|
||||||
|
name = "Ammunition - Power cell"
|
||||||
|
contains = list(/obj/item/weapon/cell/device/weapon = 3)
|
||||||
|
cost = 50
|
||||||
|
containertype = /obj/structure/closet/crate/secure
|
||||||
|
containername = "Energy ammunition crate"
|
||||||
|
access = access_security
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
access = access_security
|
access = access_security
|
||||||
|
|
||||||
/datum/supply_packs/randomised/security/armor
|
/datum/supply_packs/randomised/security/armor
|
||||||
|
name = "Armor - Security armor"
|
||||||
num_contained = 5
|
num_contained = 5
|
||||||
contains = list(
|
contains = list(
|
||||||
/obj/item/clothing/suit/storage/vest,
|
/obj/item/clothing/suit/storage/vest,
|
||||||
@@ -27,15 +28,13 @@
|
|||||||
/obj/item/clothing/suit/storage/vest/heavy/hos,
|
/obj/item/clothing/suit/storage/vest/heavy/hos,
|
||||||
/obj/item/clothing/suit/storage/vest/heavy/pcrc
|
/obj/item/clothing/suit/storage/vest/heavy/pcrc
|
||||||
)
|
)
|
||||||
|
|
||||||
name = "Armor crate"
|
|
||||||
cost = 40
|
cost = 40
|
||||||
containertype = /obj/structure/closet/crate/secure
|
containertype = /obj/structure/closet/crate/secure/gear
|
||||||
containername = "Armor crate"
|
containername = "Armor crate"
|
||||||
access_armory //VOREStation Add - Armor is for the armory.
|
access_armory //VOREStation Add - Armor is for the armory.
|
||||||
|
|
||||||
/datum/supply_packs/security/riot_gear
|
/datum/supply_packs/security/riot_gear
|
||||||
name = "Riot gear crate"
|
name = "Gear - Riot"
|
||||||
contains = list(
|
contains = list(
|
||||||
/obj/item/weapon/melee/baton = 3,
|
/obj/item/weapon/melee/baton = 3,
|
||||||
/obj/item/weapon/shield/riot = 3,
|
/obj/item/weapon/shield/riot = 3,
|
||||||
@@ -45,12 +44,12 @@
|
|||||||
/obj/item/weapon/storage/box/handcuffs
|
/obj/item/weapon/storage/box/handcuffs
|
||||||
)
|
)
|
||||||
cost = 40
|
cost = 40
|
||||||
containertype = /obj/structure/closet/crate/secure
|
containertype = /obj/structure/closet/crate/secure/gear
|
||||||
containername = "riot gear crate"
|
containername = "Riot gear crate"
|
||||||
access = access_armory
|
access = access_armory
|
||||||
|
|
||||||
/datum/supply_packs/security/riot_armor
|
/datum/supply_packs/security/riot_armor
|
||||||
name = "Riot armor set crate"
|
name = "Armor - Riot"
|
||||||
contains = list(
|
contains = list(
|
||||||
/obj/item/clothing/head/helmet/riot,
|
/obj/item/clothing/head/helmet/riot,
|
||||||
/obj/item/clothing/suit/armor/riot,
|
/obj/item/clothing/suit/armor/riot,
|
||||||
@@ -58,12 +57,12 @@
|
|||||||
/obj/item/clothing/shoes/leg_guard/riot
|
/obj/item/clothing/shoes/leg_guard/riot
|
||||||
)
|
)
|
||||||
cost = 30
|
cost = 30
|
||||||
containertype = /obj/structure/closet/crate/secure
|
containertype = /obj/structure/closet/crate/secure/gear
|
||||||
containername = "riot armor set crate"
|
containername = "Riot armor crate"
|
||||||
access = access_armory
|
access = access_armory
|
||||||
|
|
||||||
/datum/supply_packs/security/ablative_armor
|
/datum/supply_packs/security/ablative_armor
|
||||||
name = "Ablative armor set crate"
|
name = "Armor - Ablative"
|
||||||
contains = list(
|
contains = list(
|
||||||
/obj/item/clothing/head/helmet/laserproof,
|
/obj/item/clothing/head/helmet/laserproof,
|
||||||
/obj/item/clothing/suit/armor/laserproof,
|
/obj/item/clothing/suit/armor/laserproof,
|
||||||
@@ -71,12 +70,12 @@
|
|||||||
/obj/item/clothing/shoes/leg_guard/laserproof
|
/obj/item/clothing/shoes/leg_guard/laserproof
|
||||||
)
|
)
|
||||||
cost = 40
|
cost = 40
|
||||||
containertype = /obj/structure/closet/crate/secure
|
containertype = /obj/structure/closet/crate/secure/gear
|
||||||
containername = "ablative armor set crate"
|
containername = "Ablative armor crate"
|
||||||
access = access_armory
|
access = access_armory
|
||||||
|
|
||||||
/datum/supply_packs/security/bullet_resistant_armor
|
/datum/supply_packs/security/bullet_resistant_armor
|
||||||
name = "Bullet resistant armor set crate"
|
name = "Armor - Ballistic"
|
||||||
contains = list(
|
contains = list(
|
||||||
/obj/item/clothing/head/helmet/bulletproof,
|
/obj/item/clothing/head/helmet/bulletproof,
|
||||||
/obj/item/clothing/suit/armor/bulletproof,
|
/obj/item/clothing/suit/armor/bulletproof,
|
||||||
@@ -84,12 +83,12 @@
|
|||||||
/obj/item/clothing/shoes/leg_guard/bulletproof
|
/obj/item/clothing/shoes/leg_guard/bulletproof
|
||||||
)
|
)
|
||||||
cost = 40
|
cost = 40
|
||||||
containertype = /obj/structure/closet/crate/secure
|
containertype = /obj/structure/closet/crate/secure/gear
|
||||||
containername = "bullet resistant armor set crate"
|
containername = "Ballistic armor crate"
|
||||||
access = access_armory
|
access = access_armory
|
||||||
/* VOREStation Removal - Howabout no ERT armor being orderable?
|
/* VOREStation Removal - Howabout no ERT armor being orderable?
|
||||||
/datum/supply_packs/security/combat_armor
|
/datum/supply_packs/security/combat_armor
|
||||||
name = "Combat armor set crate"
|
name = "Armor - Combat"
|
||||||
contains = list(
|
contains = list(
|
||||||
/obj/item/clothing/head/helmet/combat,
|
/obj/item/clothing/head/helmet/combat,
|
||||||
/obj/item/clothing/suit/armor/combat,
|
/obj/item/clothing/suit/armor/combat,
|
||||||
@@ -97,14 +96,14 @@
|
|||||||
/obj/item/clothing/shoes/leg_guard/combat
|
/obj/item/clothing/shoes/leg_guard/combat
|
||||||
)
|
)
|
||||||
cost = 40
|
cost = 40
|
||||||
containertype = /obj/structure/closet/crate/secure
|
containertype = /obj/structure/closet/crate/secure/gear
|
||||||
containername = "combat armor set crate"
|
containername = "Combat armor crate"
|
||||||
access = access_armory
|
access = access_armory
|
||||||
|
|
||||||
/datum/supply_packs/security/tactical
|
/datum/supply_packs/security/tactical
|
||||||
name = "Tactical suits"
|
name = "Armor - Tactical"
|
||||||
containertype = /obj/structure/closet/crate/secure
|
containertype = /obj/structure/closet/crate/secure/gear
|
||||||
containername = "Tactical Suit Locker"
|
containername = "Tactical armor crate"
|
||||||
cost = 40
|
cost = 40
|
||||||
access = access_armory
|
access = access_armory
|
||||||
contains = list(
|
contains = list(
|
||||||
@@ -127,23 +126,23 @@
|
|||||||
)
|
)
|
||||||
*/
|
*/
|
||||||
/datum/supply_packs/security/securitybarriers
|
/datum/supply_packs/security/securitybarriers
|
||||||
name = "Security barrier crate"
|
name = "Misc - Security Barriers"
|
||||||
contains = list(/obj/machinery/deployable/barrier = 4)
|
contains = list(/obj/machinery/deployable/barrier = 4)
|
||||||
cost = 20
|
cost = 20
|
||||||
containertype = /obj/structure/closet/crate/secure/gear
|
containertype = /obj/structure/largecrate
|
||||||
containername = "Security barrier crate"
|
containername = "Security barrier crate"
|
||||||
access = null
|
access = null
|
||||||
|
|
||||||
/datum/supply_packs/security/securityshieldgen
|
/datum/supply_packs/security/securityshieldgen
|
||||||
name = "Wall shield Generators"
|
name = "Misc - Wall shield generators"
|
||||||
contains = list(/obj/machinery/shieldwallgen = 4)
|
contains = list(/obj/machinery/shieldwallgen = 4)
|
||||||
cost = 20
|
cost = 20
|
||||||
containertype = /obj/structure/closet/crate/secure
|
containertype = /obj/structure/closet/crate/secure
|
||||||
containername = "wall shield generators crate"
|
containername = "Wall shield generators crate"
|
||||||
access = access_teleporter
|
access = access_teleporter
|
||||||
|
|
||||||
/datum/supply_packs/randomised/security/holster
|
/datum/supply_packs/randomised/security/holster
|
||||||
name = "Holster crate"
|
name = "Gear - Holsters"
|
||||||
num_contained = 4
|
num_contained = 4
|
||||||
contains = list(
|
contains = list(
|
||||||
/obj/item/clothing/accessory/holster,
|
/obj/item/clothing/accessory/holster,
|
||||||
@@ -152,11 +151,11 @@
|
|||||||
/obj/item/clothing/accessory/holster/hip
|
/obj/item/clothing/accessory/holster/hip
|
||||||
)
|
)
|
||||||
cost = 15
|
cost = 15
|
||||||
containertype = "/obj/structure/closet/crate/secure"
|
containertype = /obj/structure/closet/crate
|
||||||
containername = "Holster crate"
|
containername = "Holster crate"
|
||||||
|
|
||||||
/datum/supply_packs/security/extragear
|
/datum/supply_packs/security/extragear
|
||||||
name = "Security surplus equipment"
|
name = "Gear - Security surplus equipment"
|
||||||
contains = list(
|
contains = list(
|
||||||
/obj/item/weapon/storage/belt/security = 3,
|
/obj/item/weapon/storage/belt/security = 3,
|
||||||
/obj/item/clothing/glasses/sunglasses/sechud = 3,
|
/obj/item/clothing/glasses/sunglasses/sechud = 3,
|
||||||
@@ -164,12 +163,11 @@
|
|||||||
/obj/item/clothing/suit/storage/hooded/wintercoat/security = 3
|
/obj/item/clothing/suit/storage/hooded/wintercoat/security = 3
|
||||||
)
|
)
|
||||||
cost = 10
|
cost = 10
|
||||||
containertype = "/obj/structure/closet/crate/secure"
|
containertype = /obj/structure/closet/crate
|
||||||
containername = "Security surplus equipment"
|
containername = "Security surplus equipment"
|
||||||
access = null
|
|
||||||
|
|
||||||
/datum/supply_packs/security/detectivegear
|
/datum/supply_packs/security/detectivegear
|
||||||
name = "Forensic investigation equipment"
|
name = "Forensic - Investigation equipment"
|
||||||
contains = list(
|
contains = list(
|
||||||
/obj/item/weapon/storage/box/evidence = 2,
|
/obj/item/weapon/storage/box/evidence = 2,
|
||||||
/obj/item/clothing/suit/storage/vest/detective,
|
/obj/item/clothing/suit/storage/vest/detective,
|
||||||
@@ -191,12 +189,12 @@
|
|||||||
/obj/item/weapon/storage/briefcase/crimekit
|
/obj/item/weapon/storage/briefcase/crimekit
|
||||||
)
|
)
|
||||||
cost = 20
|
cost = 20
|
||||||
containertype = "/obj/structure/closet/crate/secure"
|
containertype = /obj/structure/closet/crate/secure
|
||||||
containername = "Forensic equipment"
|
containername = "Forensic equipment"
|
||||||
access = access_forensics_lockers
|
access = access_forensics_lockers
|
||||||
|
|
||||||
/datum/supply_packs/security/detectiveclothes
|
/datum/supply_packs/security/detectiveclothes
|
||||||
name = "Investigation apparel"
|
name = "Forensic - Investigation apparel"
|
||||||
contains = list(
|
contains = list(
|
||||||
/obj/item/clothing/under/det/black = 2,
|
/obj/item/clothing/under/det/black = 2,
|
||||||
/obj/item/clothing/under/det/grey = 2,
|
/obj/item/clothing/under/det/grey = 2,
|
||||||
@@ -213,12 +211,12 @@
|
|||||||
/obj/item/clothing/gloves/black = 2
|
/obj/item/clothing/gloves/black = 2
|
||||||
)
|
)
|
||||||
cost = 10
|
cost = 10
|
||||||
containertype = "/obj/structure/closet/crate/secure"
|
containertype = /obj/structure/closet/crate/secure
|
||||||
containername = "Investigation clothing"
|
containername = "Investigation clothing"
|
||||||
access = access_forensics_lockers
|
access = access_forensics_lockers
|
||||||
|
|
||||||
/datum/supply_packs/security/officergear
|
/datum/supply_packs/security/officergear
|
||||||
name = "Officer equipment"
|
name = "Gear - Officer equipment"
|
||||||
contains = list(
|
contains = list(
|
||||||
/obj/item/clothing/suit/storage/vest/officer,
|
/obj/item/clothing/suit/storage/vest/officer,
|
||||||
/obj/item/clothing/head/helmet,
|
/obj/item/clothing/head/helmet,
|
||||||
@@ -243,12 +241,12 @@
|
|||||||
/obj/item/device/flashlight/maglight
|
/obj/item/device/flashlight/maglight
|
||||||
)
|
)
|
||||||
cost = 20
|
cost = 20
|
||||||
containertype = "/obj/structure/closet/crate/secure"
|
containertype = /obj/structure/closet/crate/secure
|
||||||
containername = "Officer equipment"
|
containername = "Officer equipment"
|
||||||
access = access_brig
|
access = access_brig
|
||||||
|
|
||||||
/datum/supply_packs/security/wardengear
|
/datum/supply_packs/security/wardengear
|
||||||
name = "Warden equipment"
|
name = "Gear - Warden equipment"
|
||||||
contains = list(
|
contains = list(
|
||||||
/obj/item/clothing/suit/storage/vest/warden,
|
/obj/item/clothing/suit/storage/vest/warden,
|
||||||
/obj/item/clothing/under/rank/warden,
|
/obj/item/clothing/under/rank/warden,
|
||||||
@@ -271,12 +269,12 @@
|
|||||||
/obj/item/device/flashlight/maglight
|
/obj/item/device/flashlight/maglight
|
||||||
)
|
)
|
||||||
cost = 20
|
cost = 20
|
||||||
containertype = "/obj/structure/closet/crate/secure"
|
containertype = /obj/structure/closet/crate/secure
|
||||||
containername = "Warden equipment"
|
containername = "Warden equipment"
|
||||||
access = access_armory
|
access = access_armory
|
||||||
|
|
||||||
/datum/supply_packs/security/headofsecgear
|
/datum/supply_packs/security/headofsecgear
|
||||||
name = "Head of security equipment"
|
name = "Gear - Head of security equipment"
|
||||||
contains = list(
|
contains = list(
|
||||||
/obj/item/clothing/head/helmet/HoS,
|
/obj/item/clothing/head/helmet/HoS,
|
||||||
/obj/item/clothing/suit/storage/vest/hos,
|
/obj/item/clothing/suit/storage/vest/hos,
|
||||||
@@ -297,12 +295,12 @@
|
|||||||
/obj/item/device/flashlight/maglight
|
/obj/item/device/flashlight/maglight
|
||||||
)
|
)
|
||||||
cost = 50
|
cost = 50
|
||||||
containertype = "/obj/structure/closet/crate/secure"
|
containertype = /obj/structure/closet/crate/secure
|
||||||
containername = "Head of security equipment"
|
containername = "Head of security equipment"
|
||||||
access = access_hos
|
access = access_hos
|
||||||
|
|
||||||
/datum/supply_packs/security/securityclothing
|
/datum/supply_packs/security/securityclothing
|
||||||
name = "Security uniform crate"
|
name = "Misc - Security uniform red"
|
||||||
contains = list(
|
contains = list(
|
||||||
/obj/item/weapon/storage/backpack/satchel/sec = 2,
|
/obj/item/weapon/storage/backpack/satchel/sec = 2,
|
||||||
/obj/item/weapon/storage/backpack/security = 2,
|
/obj/item/weapon/storage/backpack/security = 2,
|
||||||
@@ -316,11 +314,11 @@
|
|||||||
/obj/item/weapon/storage/box/holobadge
|
/obj/item/weapon/storage/box/holobadge
|
||||||
)
|
)
|
||||||
cost = 10
|
cost = 10
|
||||||
containertype = "/obj/structure/closet/crate/secure"
|
containertype = /obj/structure/closet/crate/secure
|
||||||
containername = "Security uniform crate"
|
containername = "Security uniform crate"
|
||||||
|
|
||||||
/datum/supply_packs/security/navybluesecurityclothing
|
/datum/supply_packs/security/navybluesecurityclothing
|
||||||
name = "Navy blue security uniform crate"
|
name = "Misc - Security uniform navy blue"
|
||||||
contains = list(
|
contains = list(
|
||||||
/obj/item/weapon/storage/backpack/satchel/sec = 2,
|
/obj/item/weapon/storage/backpack/satchel/sec = 2,
|
||||||
/obj/item/weapon/storage/backpack/security = 2,
|
/obj/item/weapon/storage/backpack/security = 2,
|
||||||
@@ -337,11 +335,11 @@
|
|||||||
/obj/item/weapon/storage/box/holobadge
|
/obj/item/weapon/storage/box/holobadge
|
||||||
)
|
)
|
||||||
cost = 10
|
cost = 10
|
||||||
containertype = "/obj/structure/closet/crate/secure"
|
containertype = /obj/structure/closet/crate/secure
|
||||||
containername = "Navy blue security uniform crate"
|
containername = "Navy blue security uniform crate"
|
||||||
|
|
||||||
/datum/supply_packs/security/corporatesecurityclothing
|
/datum/supply_packs/security/corporatesecurityclothing
|
||||||
name = "Corporate security uniform crate"
|
name = "Misc - Security uniform corporate"
|
||||||
contains = list(
|
contains = list(
|
||||||
/obj/item/weapon/storage/backpack/satchel/sec = 2,
|
/obj/item/weapon/storage/backpack/satchel/sec = 2,
|
||||||
/obj/item/weapon/storage/backpack/security = 2,
|
/obj/item/weapon/storage/backpack/security = 2,
|
||||||
@@ -357,11 +355,11 @@
|
|||||||
/obj/item/weapon/storage/box/holobadge
|
/obj/item/weapon/storage/box/holobadge
|
||||||
)
|
)
|
||||||
cost = 10
|
cost = 10
|
||||||
containertype = "/obj/structure/closet/crate/secure"
|
containertype = /obj/structure/closet/crate/secure
|
||||||
containername = "Corporate security uniform crate"
|
containername = "Corporate security uniform crate"
|
||||||
|
|
||||||
/datum/supply_packs/security/biosuit
|
/datum/supply_packs/security/biosuit
|
||||||
name = "Security biohazard gear"
|
name = "Gear - Security biohazard gear"
|
||||||
contains = list(
|
contains = list(
|
||||||
/obj/item/clothing/head/bio_hood/security = 3,
|
/obj/item/clothing/head/bio_hood/security = 3,
|
||||||
/obj/item/clothing/under/rank/security = 3,
|
/obj/item/clothing/under/rank/security = 3,
|
||||||
@@ -372,6 +370,7 @@
|
|||||||
/obj/item/clothing/gloves/sterile/latex,
|
/obj/item/clothing/gloves/sterile/latex,
|
||||||
/obj/item/weapon/storage/box/gloves
|
/obj/item/weapon/storage/box/gloves
|
||||||
)
|
)
|
||||||
cost = 50
|
cost = 25
|
||||||
containertype = "/obj/structure/closet/crate/secure"
|
containertype = /obj/structure/closet/crate/secure
|
||||||
containername = "Security biohazard gear"
|
containername = "Security biohazard gear"
|
||||||
|
access = access_security
|
||||||
@@ -63,11 +63,11 @@ datum/category_group/underwear/dd_SortValue()
|
|||||||
/datum/category_item/underwear/proc/is_default(var/gender)
|
/datum/category_item/underwear/proc/is_default(var/gender)
|
||||||
return is_default
|
return is_default
|
||||||
|
|
||||||
/datum/category_item/underwear/proc/generate_image(var/list/metadata)
|
/datum/category_item/underwear/proc/generate_image(var/list/metadata, var/layer = FLOAT_LAYER)
|
||||||
if(!icon_state)
|
if(!icon_state)
|
||||||
return
|
return
|
||||||
|
|
||||||
var/image/I = image(icon = icon, icon_state = icon_state)
|
var/image/I = image(icon = icon, icon_state = icon_state, layer = layer)
|
||||||
for(var/datum/gear_tweak/gt in tweaks)
|
for(var/datum/gear_tweak/gt in tweaks)
|
||||||
gt.tweak_item(I, metadata && metadata["[gt]"] ? metadata["[gt]"] : gt.get_default())
|
gt.tweak_item(I, metadata && metadata["[gt]"] ? metadata["[gt]"] : gt.get_default())
|
||||||
return I
|
return I
|
||||||
@@ -480,6 +480,7 @@
|
|||||||
/obj/item/weapon/stock_parts/capacitor/adv
|
/obj/item/weapon/stock_parts/capacitor/adv
|
||||||
name = "advanced capacitor"
|
name = "advanced capacitor"
|
||||||
desc = "An advanced capacitor used in the construction of a variety of devices."
|
desc = "An advanced capacitor used in the construction of a variety of devices."
|
||||||
|
icon_state = "capacitor_adv"
|
||||||
origin_tech = list(TECH_POWER = 3)
|
origin_tech = list(TECH_POWER = 3)
|
||||||
rating = 2
|
rating = 2
|
||||||
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 50)
|
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 50)
|
||||||
@@ -487,7 +488,7 @@
|
|||||||
/obj/item/weapon/stock_parts/scanning_module/adv
|
/obj/item/weapon/stock_parts/scanning_module/adv
|
||||||
name = "advanced scanning module"
|
name = "advanced scanning module"
|
||||||
desc = "A compact, high resolution scanning module used in the construction of certain devices."
|
desc = "A compact, high resolution scanning module used in the construction of certain devices."
|
||||||
icon_state = "scan_module"
|
icon_state = "scan_module_adv"
|
||||||
origin_tech = list(TECH_MAGNET = 3)
|
origin_tech = list(TECH_MAGNET = 3)
|
||||||
rating = 2
|
rating = 2
|
||||||
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 20)
|
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 20)
|
||||||
@@ -521,6 +522,7 @@
|
|||||||
/obj/item/weapon/stock_parts/capacitor/super
|
/obj/item/weapon/stock_parts/capacitor/super
|
||||||
name = "super capacitor"
|
name = "super capacitor"
|
||||||
desc = "A super-high capacity capacitor used in the construction of a variety of devices."
|
desc = "A super-high capacity capacitor used in the construction of a variety of devices."
|
||||||
|
icon_state = "capacitor_super"
|
||||||
origin_tech = list(TECH_POWER = 5, TECH_MATERIAL = 4)
|
origin_tech = list(TECH_POWER = 5, TECH_MATERIAL = 4)
|
||||||
rating = 3
|
rating = 3
|
||||||
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 50)
|
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 50)
|
||||||
@@ -528,6 +530,7 @@
|
|||||||
/obj/item/weapon/stock_parts/scanning_module/phasic
|
/obj/item/weapon/stock_parts/scanning_module/phasic
|
||||||
name = "phasic scanning module"
|
name = "phasic scanning module"
|
||||||
desc = "A compact, high resolution phasic scanning module used in the construction of certain devices."
|
desc = "A compact, high resolution phasic scanning module used in the construction of certain devices."
|
||||||
|
icon_state = "scan_module_phasic"
|
||||||
origin_tech = list(TECH_MAGNET = 5)
|
origin_tech = list(TECH_MAGNET = 5)
|
||||||
rating = 3
|
rating = 3
|
||||||
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 20)
|
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 20)
|
||||||
|
|||||||
@@ -52,7 +52,7 @@
|
|||||||
var/flags = 0 // Various runtime options.
|
var/flags = 0 // Various runtime options.
|
||||||
|
|
||||||
// Used for setting appearance.
|
// Used for setting appearance.
|
||||||
var/list/valid_species = list("Unathi","Tajara","Skrell","Human","Diona","Teshari")
|
var/list/valid_species = list(SPECIES_UNATHI,SPECIES_TAJ,SPECIES_SKRELL,SPECIES_HUMAN,SPECIES_DIONA,SPECIES_TESHARI)
|
||||||
|
|
||||||
// Runtime vars.
|
// Runtime vars.
|
||||||
var/datum/mind/leader // Current leader, if any.
|
var/datum/mind/leader // Current leader, if any.
|
||||||
|
|||||||
@@ -50,8 +50,6 @@ var/datum/antagonist/mercenary/mercs
|
|||||||
var/obj/item/device/radio/uplink/U = new(player.loc, player.mind, DEFAULT_TELECRYSTAL_AMOUNT)
|
var/obj/item/device/radio/uplink/U = new(player.loc, player.mind, DEFAULT_TELECRYSTAL_AMOUNT)
|
||||||
player.put_in_hands(U)
|
player.put_in_hands(U)
|
||||||
|
|
||||||
player.update_icons_layers()
|
|
||||||
|
|
||||||
create_id("Mercenary", player)
|
create_id("Mercenary", player)
|
||||||
create_radio(SYND_FREQ, player)
|
create_radio(SYND_FREQ, player)
|
||||||
return 1
|
return 1
|
||||||
|
|||||||
@@ -158,7 +158,7 @@ var/datum/antagonist/ninja/ninjas
|
|||||||
if(13)
|
if(13)
|
||||||
directive += "Some disgruntled [using_map.company_name] employees have been supportive of our operations. Be wary of any mistreatment by command staff."
|
directive += "Some disgruntled [using_map.company_name] employees have been supportive of our operations. Be wary of any mistreatment by command staff."
|
||||||
if(14)
|
if(14)
|
||||||
var/xenorace = pick("Unathi","Tajara", "Skrell")
|
var/xenorace = pick(SPECIES_UNATHI, SPECIES_TAJ, SPECIES_SKRELL)
|
||||||
directive += "A group of [xenorace] radicals have been loyal supporters of the Spider Clan. Favor [xenorace] crew whenever possible."
|
directive += "A group of [xenorace] radicals have been loyal supporters of the Spider Clan. Favor [xenorace] crew whenever possible."
|
||||||
if(15)
|
if(15)
|
||||||
directive += "The Spider Clan has recently been accused of religious insensitivity. Attempt to speak with the Chaplain and prove these accusations false."
|
directive += "The Spider Clan has recently been accused of religious insensitivity. Attempt to speak with the Chaplain and prove these accusations false."
|
||||||
|
|||||||
@@ -205,7 +205,7 @@ var/datum/antagonist/raider/raiders
|
|||||||
if(!..())
|
if(!..())
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
if(player.species && player.species.get_bodytype() == "Vox")
|
if(player.species && player.species.get_bodytype() == SPECIES_VOX)
|
||||||
equip_vox(player)
|
equip_vox(player)
|
||||||
else
|
else
|
||||||
var/new_shoes = pick(raider_shoes)
|
var/new_shoes = pick(raider_shoes)
|
||||||
|
|||||||
@@ -47,7 +47,6 @@ var/datum/antagonist/technomancer/technomancers
|
|||||||
technomancer_mob.equip_to_slot_or_del(new /obj/item/device/flashlight(technomancer_mob), slot_belt)
|
technomancer_mob.equip_to_slot_or_del(new /obj/item/device/flashlight(technomancer_mob), slot_belt)
|
||||||
technomancer_mob.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(technomancer_mob), slot_shoes)
|
technomancer_mob.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(technomancer_mob), slot_shoes)
|
||||||
technomancer_mob.equip_to_slot_or_del(new /obj/item/clothing/head/technomancer/master(technomancer_mob), slot_head)
|
technomancer_mob.equip_to_slot_or_del(new /obj/item/clothing/head/technomancer/master(technomancer_mob), slot_head)
|
||||||
technomancer_mob.update_icons_layers()
|
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
/datum/antagonist/technomancer/proc/equip_apprentice(var/mob/living/carbon/human/technomancer_mob)
|
/datum/antagonist/technomancer/proc/equip_apprentice(var/mob/living/carbon/human/technomancer_mob)
|
||||||
@@ -67,7 +66,6 @@ var/datum/antagonist/technomancer/technomancers
|
|||||||
technomancer_mob.equip_to_slot_or_del(new /obj/item/device/flashlight(technomancer_mob), slot_belt)
|
technomancer_mob.equip_to_slot_or_del(new /obj/item/device/flashlight(technomancer_mob), slot_belt)
|
||||||
technomancer_mob.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(technomancer_mob), slot_shoes)
|
technomancer_mob.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(technomancer_mob), slot_shoes)
|
||||||
technomancer_mob.equip_to_slot_or_del(new /obj/item/clothing/head/technomancer/apprentice(technomancer_mob), slot_head)
|
technomancer_mob.equip_to_slot_or_del(new /obj/item/clothing/head/technomancer/apprentice(technomancer_mob), slot_head)
|
||||||
technomancer_mob.update_icons()
|
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
/datum/antagonist/technomancer/check_victory()
|
/datum/antagonist/technomancer/check_victory()
|
||||||
|
|||||||
@@ -87,7 +87,6 @@ var/datum/antagonist/wizard/wizards
|
|||||||
wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/box(wizard_mob), slot_in_backpack)
|
wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/box(wizard_mob), slot_in_backpack)
|
||||||
wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(wizard_mob), slot_r_store)
|
wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(wizard_mob), slot_r_store)
|
||||||
wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/spellbook(wizard_mob), slot_r_hand)
|
wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/spellbook(wizard_mob), slot_r_hand)
|
||||||
wizard_mob.update_icons_layers()
|
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
/datum/antagonist/wizard/check_victory()
|
/datum/antagonist/wizard/check_victory()
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ var/list/ghostteleportlocs = list()
|
|||||||
power_light = 0
|
power_light = 0
|
||||||
power_equip = 0
|
power_equip = 0
|
||||||
power_environ = 0
|
power_environ = 0
|
||||||
ambience = list('sound/ambience/ambispace.ogg','sound/music/title2.ogg','sound/music/space.ogg','sound/music/main.ogg','sound/music/traitor.ogg')
|
ambience = list('sound/ambience/ambispace.ogg','sound/music/title2.ogg','sound/music/space.ogg','sound/music/main.ogg','sound/music/traitor.ogg','sound/ambience/serspaceamb1.ogg')
|
||||||
base_turf = /turf/space
|
base_turf = /turf/space
|
||||||
|
|
||||||
area/space/atmosalert()
|
area/space/atmosalert()
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ var/global/list/datum/dna/gene/dna_genes[0]
|
|||||||
// VOREStation
|
// VOREStation
|
||||||
|
|
||||||
// New stuff
|
// New stuff
|
||||||
var/species = "Human"
|
var/species = SPECIES_HUMAN
|
||||||
var/list/body_markings = list()
|
var/list/body_markings = list()
|
||||||
|
|
||||||
// Make a copy of this strand.
|
// Make a copy of this strand.
|
||||||
|
|||||||
@@ -122,7 +122,6 @@
|
|||||||
playsound(src, 'sound/effects/splat.ogg', 30, 1)
|
playsound(src, 'sound/effects/splat.ogg', 30, 1)
|
||||||
visible_message("<span class='warning'>[src] pulls on their clothes, peeling it off along with parts of their skin attached!</span>",
|
visible_message("<span class='warning'>[src] pulls on their clothes, peeling it off along with parts of their skin attached!</span>",
|
||||||
"<span class='notice'>We remove and deform our equipment.</span>")
|
"<span class='notice'>We remove and deform our equipment.</span>")
|
||||||
M.update_icons_layers()
|
|
||||||
M.mind.changeling.armor_deployed = 0
|
M.mind.changeling.armor_deployed = 0
|
||||||
return success
|
return success
|
||||||
|
|
||||||
@@ -138,7 +137,6 @@
|
|||||||
M.equip_to_slot_or_del(I, slot_head)
|
M.equip_to_slot_or_del(I, slot_head)
|
||||||
grown_items_list.Add("a helmet")
|
grown_items_list.Add("a helmet")
|
||||||
playsound(src, 'sound/effects/blobattack.ogg', 30, 1)
|
playsound(src, 'sound/effects/blobattack.ogg', 30, 1)
|
||||||
M.update_icons_layers()
|
|
||||||
success = 1
|
success = 1
|
||||||
sleep(1 SECOND)
|
sleep(1 SECOND)
|
||||||
|
|
||||||
@@ -148,7 +146,6 @@
|
|||||||
M.equip_to_slot_or_del(I, slot_w_uniform)
|
M.equip_to_slot_or_del(I, slot_w_uniform)
|
||||||
grown_items_list.Add("a uniform")
|
grown_items_list.Add("a uniform")
|
||||||
playsound(src, 'sound/effects/blobattack.ogg', 30, 1)
|
playsound(src, 'sound/effects/blobattack.ogg', 30, 1)
|
||||||
M.update_icons_layers()
|
|
||||||
success = 1
|
success = 1
|
||||||
sleep(1 SECOND)
|
sleep(1 SECOND)
|
||||||
|
|
||||||
@@ -158,7 +155,6 @@
|
|||||||
M.equip_to_slot_or_del(I, slot_gloves)
|
M.equip_to_slot_or_del(I, slot_gloves)
|
||||||
grown_items_list.Add("some gloves")
|
grown_items_list.Add("some gloves")
|
||||||
playsound(src, 'sound/effects/splat.ogg', 30, 1)
|
playsound(src, 'sound/effects/splat.ogg', 30, 1)
|
||||||
M.update_icons_layers()
|
|
||||||
success = 1
|
success = 1
|
||||||
sleep(1 SECOND)
|
sleep(1 SECOND)
|
||||||
|
|
||||||
@@ -168,7 +164,6 @@
|
|||||||
M.equip_to_slot_or_del(I, slot_shoes)
|
M.equip_to_slot_or_del(I, slot_shoes)
|
||||||
grown_items_list.Add("shoes")
|
grown_items_list.Add("shoes")
|
||||||
playsound(src, 'sound/effects/splat.ogg', 30, 1)
|
playsound(src, 'sound/effects/splat.ogg', 30, 1)
|
||||||
M.update_icons_layers()
|
|
||||||
success = 1
|
success = 1
|
||||||
sleep(1 SECOND)
|
sleep(1 SECOND)
|
||||||
|
|
||||||
@@ -178,7 +173,6 @@
|
|||||||
M.equip_to_slot_or_del(I, slot_belt)
|
M.equip_to_slot_or_del(I, slot_belt)
|
||||||
grown_items_list.Add("a belt")
|
grown_items_list.Add("a belt")
|
||||||
playsound(src, 'sound/effects/splat.ogg', 30, 1)
|
playsound(src, 'sound/effects/splat.ogg', 30, 1)
|
||||||
M.update_icons_layers()
|
|
||||||
success = 1
|
success = 1
|
||||||
sleep(1 SECOND)
|
sleep(1 SECOND)
|
||||||
|
|
||||||
@@ -188,7 +182,6 @@
|
|||||||
M.equip_to_slot_or_del(I, slot_glasses)
|
M.equip_to_slot_or_del(I, slot_glasses)
|
||||||
grown_items_list.Add("some glasses")
|
grown_items_list.Add("some glasses")
|
||||||
playsound(src, 'sound/effects/splat.ogg', 30, 1)
|
playsound(src, 'sound/effects/splat.ogg', 30, 1)
|
||||||
M.update_icons_layers()
|
|
||||||
success = 1
|
success = 1
|
||||||
sleep(1 SECOND)
|
sleep(1 SECOND)
|
||||||
|
|
||||||
@@ -198,7 +191,6 @@
|
|||||||
M.equip_to_slot_or_del(I, slot_wear_mask)
|
M.equip_to_slot_or_del(I, slot_wear_mask)
|
||||||
grown_items_list.Add("a mask")
|
grown_items_list.Add("a mask")
|
||||||
playsound(src, 'sound/effects/splat.ogg', 30, 1)
|
playsound(src, 'sound/effects/splat.ogg', 30, 1)
|
||||||
M.update_icons_layers()
|
|
||||||
success = 1
|
success = 1
|
||||||
sleep(1 SECOND)
|
sleep(1 SECOND)
|
||||||
|
|
||||||
@@ -208,7 +200,6 @@
|
|||||||
M.equip_to_slot_or_del(I, slot_back)
|
M.equip_to_slot_or_del(I, slot_back)
|
||||||
grown_items_list.Add("a backpack")
|
grown_items_list.Add("a backpack")
|
||||||
playsound(src, 'sound/effects/blobattack.ogg', 30, 1)
|
playsound(src, 'sound/effects/blobattack.ogg', 30, 1)
|
||||||
M.update_icons_layers()
|
|
||||||
success = 1
|
success = 1
|
||||||
sleep(1 SECOND)
|
sleep(1 SECOND)
|
||||||
|
|
||||||
@@ -218,7 +209,6 @@
|
|||||||
M.equip_to_slot_or_del(I, slot_wear_suit)
|
M.equip_to_slot_or_del(I, slot_wear_suit)
|
||||||
grown_items_list.Add("an exosuit")
|
grown_items_list.Add("an exosuit")
|
||||||
playsound(src, 'sound/effects/blobattack.ogg', 30, 1)
|
playsound(src, 'sound/effects/blobattack.ogg', 30, 1)
|
||||||
M.update_icons_layers()
|
|
||||||
success = 1
|
success = 1
|
||||||
sleep(1 SECOND)
|
sleep(1 SECOND)
|
||||||
|
|
||||||
@@ -228,20 +218,13 @@
|
|||||||
M.equip_to_slot_or_del(I, slot_wear_id)
|
M.equip_to_slot_or_del(I, slot_wear_id)
|
||||||
grown_items_list.Add("an ID card")
|
grown_items_list.Add("an ID card")
|
||||||
playsound(src, 'sound/effects/splat.ogg', 30, 1)
|
playsound(src, 'sound/effects/splat.ogg', 30, 1)
|
||||||
M.update_icons_layers()
|
|
||||||
success = 1
|
success = 1
|
||||||
sleep(1 SECOND)
|
sleep(1 SECOND)
|
||||||
|
|
||||||
var/feedback = english_list(grown_items_list, nothing_text = "nothing", and_text = " and ", comma_text = ", ", final_comma_text = "" )
|
var/feedback = english_list(grown_items_list, nothing_text = "nothing", and_text = " and ", comma_text = ", ", final_comma_text = "" )
|
||||||
|
|
||||||
M << "<span class='notice'>We have grown [feedback].</span>"
|
M << "<span class='notice'>We have grown [feedback].</span>"
|
||||||
/*
|
|
||||||
for(var/I in stuff_to_equip)
|
|
||||||
world << I
|
|
||||||
world << stuff_to_equip
|
|
||||||
world << "Proc ended."
|
|
||||||
*/
|
|
||||||
M.update_icons()
|
|
||||||
if(success)
|
if(success)
|
||||||
M.mind.changeling.armor_deployed = 1
|
M.mind.changeling.armor_deployed = 1
|
||||||
M.mind.changeling.chem_charges -= 10
|
M.mind.changeling.chem_charges -= 10
|
||||||
|
|||||||
@@ -56,7 +56,6 @@ var/global/list/changeling_fabricated_clothing = list(
|
|||||||
visible_message("<span class='warning'>[H] tears off [src]!</span>",
|
visible_message("<span class='warning'>[H] tears off [src]!</span>",
|
||||||
"<span class='notice'>We remove [src].</span>")
|
"<span class='notice'>We remove [src].</span>")
|
||||||
qdel(src)
|
qdel(src)
|
||||||
H.update_icons_layers()
|
|
||||||
|
|
||||||
/obj/item/clothing/head/chameleon/changeling
|
/obj/item/clothing/head/chameleon/changeling
|
||||||
name = "malformed head"
|
name = "malformed head"
|
||||||
@@ -78,7 +77,6 @@ var/global/list/changeling_fabricated_clothing = list(
|
|||||||
visible_message("<span class='warning'>[H] tears off [src]!</span>",
|
visible_message("<span class='warning'>[H] tears off [src]!</span>",
|
||||||
"<span class='notice'>We remove [src].</span>")
|
"<span class='notice'>We remove [src].</span>")
|
||||||
qdel(src)
|
qdel(src)
|
||||||
H.update_icons_layers()
|
|
||||||
|
|
||||||
/obj/item/clothing/suit/chameleon/changeling
|
/obj/item/clothing/suit/chameleon/changeling
|
||||||
name = "chitinous chest"
|
name = "chitinous chest"
|
||||||
@@ -104,7 +102,6 @@ var/global/list/changeling_fabricated_clothing = list(
|
|||||||
visible_message("<span class='warning'>[H] tears off [src]!</span>",
|
visible_message("<span class='warning'>[H] tears off [src]!</span>",
|
||||||
"<span class='notice'>We remove [src].</span>")
|
"<span class='notice'>We remove [src].</span>")
|
||||||
qdel(src)
|
qdel(src)
|
||||||
H.update_icons_layers()
|
|
||||||
|
|
||||||
/obj/item/clothing/shoes/chameleon/changeling
|
/obj/item/clothing/shoes/chameleon/changeling
|
||||||
name = "malformed feet"
|
name = "malformed feet"
|
||||||
@@ -130,7 +127,6 @@ var/global/list/changeling_fabricated_clothing = list(
|
|||||||
visible_message("<span class='warning'>[H] tears off [src]!</span>",
|
visible_message("<span class='warning'>[H] tears off [src]!</span>",
|
||||||
"<span class='notice'>We remove [src].</span>")
|
"<span class='notice'>We remove [src].</span>")
|
||||||
qdel(src)
|
qdel(src)
|
||||||
H.update_icons_layers()
|
|
||||||
|
|
||||||
/obj/item/weapon/storage/backpack/chameleon/changeling
|
/obj/item/weapon/storage/backpack/chameleon/changeling
|
||||||
name = "backpack"
|
name = "backpack"
|
||||||
@@ -158,7 +154,6 @@ var/global/list/changeling_fabricated_clothing = list(
|
|||||||
for(var/atom/movable/AM in src.contents) //Dump whatever's in the bag before deleting.
|
for(var/atom/movable/AM in src.contents) //Dump whatever's in the bag before deleting.
|
||||||
AM.forceMove(get_turf(loc))
|
AM.forceMove(get_turf(loc))
|
||||||
qdel(src)
|
qdel(src)
|
||||||
H.update_icons_layers()
|
|
||||||
|
|
||||||
/obj/item/clothing/gloves/chameleon/changeling
|
/obj/item/clothing/gloves/chameleon/changeling
|
||||||
name = "malformed hands"
|
name = "malformed hands"
|
||||||
@@ -185,8 +180,6 @@ var/global/list/changeling_fabricated_clothing = list(
|
|||||||
visible_message("<span class='warning'>[H] tears off [src]!</span>",
|
visible_message("<span class='warning'>[H] tears off [src]!</span>",
|
||||||
"<span class='notice'>We remove [src].</span>")
|
"<span class='notice'>We remove [src].</span>")
|
||||||
qdel(src)
|
qdel(src)
|
||||||
H.update_icons_layers()
|
|
||||||
|
|
||||||
|
|
||||||
/obj/item/clothing/mask/chameleon/changeling
|
/obj/item/clothing/mask/chameleon/changeling
|
||||||
name = "chitin visor"
|
name = "chitin visor"
|
||||||
@@ -213,7 +206,6 @@ var/global/list/changeling_fabricated_clothing = list(
|
|||||||
visible_message("<span class='warning'>[H] tears off [src]!</span>",
|
visible_message("<span class='warning'>[H] tears off [src]!</span>",
|
||||||
"<span class='notice'>We remove [src].</span>")
|
"<span class='notice'>We remove [src].</span>")
|
||||||
qdel(src)
|
qdel(src)
|
||||||
H.update_icons_layers()
|
|
||||||
|
|
||||||
/obj/item/clothing/glasses/chameleon/changeling
|
/obj/item/clothing/glasses/chameleon/changeling
|
||||||
name = "chitin goggles"
|
name = "chitin goggles"
|
||||||
@@ -235,7 +227,6 @@ var/global/list/changeling_fabricated_clothing = list(
|
|||||||
visible_message("<span class='warning'>[H] tears off [src]!</span>",
|
visible_message("<span class='warning'>[H] tears off [src]!</span>",
|
||||||
"<span class='notice'>We remove [src].</span>")
|
"<span class='notice'>We remove [src].</span>")
|
||||||
qdel(src)
|
qdel(src)
|
||||||
H.update_icons_layers()
|
|
||||||
|
|
||||||
/obj/item/weapon/storage/belt/chameleon/changeling
|
/obj/item/weapon/storage/belt/chameleon/changeling
|
||||||
name = "waist pouch"
|
name = "waist pouch"
|
||||||
@@ -261,7 +252,6 @@ var/global/list/changeling_fabricated_clothing = list(
|
|||||||
visible_message("<span class='warning'>[H] tears off [src]!</span>",
|
visible_message("<span class='warning'>[H] tears off [src]!</span>",
|
||||||
"<span class='notice'>We remove [src].</span>")
|
"<span class='notice'>We remove [src].</span>")
|
||||||
qdel(src)
|
qdel(src)
|
||||||
H.update_icons_layers()
|
|
||||||
|
|
||||||
/obj/item/weapon/card/id/syndicate/changeling
|
/obj/item/weapon/card/id/syndicate/changeling
|
||||||
name = "chitinous card"
|
name = "chitinous card"
|
||||||
@@ -291,8 +281,6 @@ var/global/list/changeling_fabricated_clothing = list(
|
|||||||
visible_message("<span class='warning'>[H] tears off [src]!</span>",
|
visible_message("<span class='warning'>[H] tears off [src]!</span>",
|
||||||
"<span class='notice'>We remove [src].</span>")
|
"<span class='notice'>We remove [src].</span>")
|
||||||
qdel(src)
|
qdel(src)
|
||||||
H.update_icons_layers()
|
|
||||||
|
|
||||||
|
|
||||||
/obj/item/weapon/card/id/syndicate/changeling/Click() //Since we can't hold it in our hands, and attack_hand() doesn't work if it in inventory...
|
/obj/item/weapon/card/id/syndicate/changeling/Click() //Since we can't hold it in our hands, and attack_hand() doesn't work if it in inventory...
|
||||||
if(!registered_user)
|
if(!registered_user)
|
||||||
|
|||||||
@@ -87,4 +87,3 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
|
|||||||
minimal_access = list(access_heads, access_keycard_auth)
|
minimal_access = list(access_heads, access_keycard_auth)
|
||||||
|
|
||||||
outfit_type = /decl/hierarchy/outfit/job/secretary
|
outfit_type = /decl/hierarchy/outfit/job/secretary
|
||||||
alt_titles = list("Command Liaison", "Bridge Secretary")
|
|
||||||
|
|||||||
@@ -49,7 +49,7 @@
|
|||||||
minimal_access = list(access_hydroponics)
|
minimal_access = list(access_hydroponics)
|
||||||
|
|
||||||
outfit_type = /decl/hierarchy/outfit/job/service/gardener
|
outfit_type = /decl/hierarchy/outfit/job/service/gardener
|
||||||
alt_titles = list("Hydroponicist", "Gardener")
|
alt_titles = list("Gardener")
|
||||||
|
|
||||||
//Cargo
|
//Cargo
|
||||||
/datum/job/qm
|
/datum/job/qm
|
||||||
@@ -105,7 +105,7 @@
|
|||||||
minimal_access = list(access_mining, access_mining_station, access_mailsorting)
|
minimal_access = list(access_mining, access_mining_station, access_mailsorting)
|
||||||
|
|
||||||
outfit_type = /decl/hierarchy/outfit/job/cargo/mining
|
outfit_type = /decl/hierarchy/outfit/job/cargo/mining
|
||||||
alt_titles = list("Drill Technician","Prospector")
|
alt_titles = list("Drill Technician")
|
||||||
|
|
||||||
//Service
|
//Service
|
||||||
/datum/job/janitor
|
/datum/job/janitor
|
||||||
@@ -123,7 +123,7 @@
|
|||||||
minimal_access = list(access_janitor, access_maint_tunnels)
|
minimal_access = list(access_janitor, access_maint_tunnels)
|
||||||
|
|
||||||
outfit_type = /decl/hierarchy/outfit/job/service/janitor
|
outfit_type = /decl/hierarchy/outfit/job/service/janitor
|
||||||
alt_titles = list("Custodian", "Sanitation Technician")
|
alt_titles = list("Custodian")
|
||||||
|
|
||||||
//More or less assistants
|
//More or less assistants
|
||||||
/datum/job/librarian
|
/datum/job/librarian
|
||||||
@@ -141,7 +141,7 @@
|
|||||||
minimal_access = list(access_library)
|
minimal_access = list(access_library)
|
||||||
|
|
||||||
outfit_type = /decl/hierarchy/outfit/job/librarian
|
outfit_type = /decl/hierarchy/outfit/job/librarian
|
||||||
alt_titles = list("Journalist", "Professor", "Historian", "Writer")
|
alt_titles = list("Journalist", "Writer")
|
||||||
|
|
||||||
//var/global/lawyer = 0//Checks for another lawyer //This changed clothes on 2nd lawyer, both IA get the same dreds.
|
//var/global/lawyer = 0//Checks for another lawyer //This changed clothes on 2nd lawyer, both IA get the same dreds.
|
||||||
/datum/job/lawyer
|
/datum/job/lawyer
|
||||||
|
|||||||
@@ -155,7 +155,6 @@
|
|||||||
var/mob/M = obj.loc
|
var/mob/M = obj.loc
|
||||||
if(ismob(M))
|
if(ismob(M))
|
||||||
M.remove_from_mob(obj)
|
M.remove_from_mob(obj)
|
||||||
M.update_icons_layers() //so their overlays update
|
|
||||||
|
|
||||||
if(!silent)
|
if(!silent)
|
||||||
var/obj/oldobj = obj
|
var/obj/oldobj = obj
|
||||||
|
|||||||
@@ -588,7 +588,7 @@
|
|||||||
//Departments that the cycler can paint suits to look like.
|
//Departments that the cycler can paint suits to look like.
|
||||||
var/list/departments = list("Engineering","Mining","Medical","Security","Atmos","HAZMAT","Construction","Biohazard","Emergency Medical Response","Crowd Control")
|
var/list/departments = list("Engineering","Mining","Medical","Security","Atmos","HAZMAT","Construction","Biohazard","Emergency Medical Response","Crowd Control")
|
||||||
//Species that the suits can be configured to fit.
|
//Species that the suits can be configured to fit.
|
||||||
var/list/species = list("Human","Skrell","Unathi","Tajara", "Teshari", "Nevrean", "Akula", "Sergal", "Flatland Zorren", "Highlander Zorren", "Vulpkanin", "Promethean", "Xenomorph Hybrid", "Xenochimera","Vasilissan", "Rapala") //VORESTATION EDIT
|
var/list/species = list(SPECIES_HUMAN,SPECIES_SKRELL,SPECIES_UNATHI,SPECIES_TAJ, SPECIES_TESHARI, "Nevrean", "Akula", "Sergal", "Flatland Zorren", "Highlander Zorren", "Vulpkanin", "Promethean", "Xenomorph Hybrid", "Xenochimera","Vasilissan", "Rapala") //VORESTATION EDIT
|
||||||
|
|
||||||
var/target_department
|
var/target_department
|
||||||
var/target_species
|
var/target_species
|
||||||
@@ -753,7 +753,7 @@
|
|||||||
//Clear the access reqs, disable the safeties, and open up all paintjobs.
|
//Clear the access reqs, disable the safeties, and open up all paintjobs.
|
||||||
user << "<span class='danger'>You run the sequencer across the interface, corrupting the operating protocols.</span>"
|
user << "<span class='danger'>You run the sequencer across the interface, corrupting the operating protocols.</span>"
|
||||||
departments = list("Engineering","Mining","Medical","Security","Atmos","HAZMAT","Construction","Biohazard","Crowd Control","Emergency Medical Response","^%###^%$", "Charring")
|
departments = list("Engineering","Mining","Medical","Security","Atmos","HAZMAT","Construction","Biohazard","Crowd Control","Emergency Medical Response","^%###^%$", "Charring")
|
||||||
species = list("Human","Skrell","Unathi","Tajara", "Teshari", "Nevrean", "Akula", "Sergal", "Flatland Zorren", "Highlander Zorren", "Vulpkanin", "Promethean", "Xenomorph Hybrid", "Vasilissan", "Rapala") //VORESTATION EDIT
|
species = list(SPECIES_HUMAN,SPECIES_SKRELL,SPECIES_UNATHI,SPECIES_TAJ, SPECIES_TESHARI, "Nevrean", "Akula", "Sergal", "Flatland Zorren", "Highlander Zorren", "Vulpkanin", "Promethean", "Xenomorph Hybrid", "Vasilissan", "Rapala") //VORESTATION EDIT
|
||||||
|
|
||||||
emagged = 1
|
emagged = 1
|
||||||
safeties = 0
|
safeties = 0
|
||||||
@@ -982,7 +982,9 @@
|
|||||||
if(suit)
|
if(suit)
|
||||||
suit.name = "engineering voidsuit"
|
suit.name = "engineering voidsuit"
|
||||||
suit.icon_state = "rig-engineering"
|
suit.icon_state = "rig-engineering"
|
||||||
suit.item_state = "eng_voidsuit"
|
suit.item_state = "rig-engineering"
|
||||||
|
suit.item_state_slots[slot_r_hand_str] = "eng_voidsuit"
|
||||||
|
suit.item_state_slots[slot_l_hand_str] = "eng_voidsuit"
|
||||||
if("Mining")
|
if("Mining")
|
||||||
if(helmet)
|
if(helmet)
|
||||||
helmet.name = "mining voidsuit helmet"
|
helmet.name = "mining voidsuit helmet"
|
||||||
@@ -991,7 +993,9 @@
|
|||||||
if(suit)
|
if(suit)
|
||||||
suit.name = "mining voidsuit"
|
suit.name = "mining voidsuit"
|
||||||
suit.icon_state = "rig-mining"
|
suit.icon_state = "rig-mining"
|
||||||
suit.item_state = "mining_voidsuit"
|
suit.item_state = "rig-mining"
|
||||||
|
suit.item_state_slots[slot_r_hand_str] = "mining_voidsuit"
|
||||||
|
suit.item_state_slots[slot_l_hand_str] = "mining_voidsuit"
|
||||||
if("Medical")
|
if("Medical")
|
||||||
if(helmet)
|
if(helmet)
|
||||||
helmet.name = "medical voidsuit helmet"
|
helmet.name = "medical voidsuit helmet"
|
||||||
@@ -1000,7 +1004,9 @@
|
|||||||
if(suit)
|
if(suit)
|
||||||
suit.name = "medical voidsuit"
|
suit.name = "medical voidsuit"
|
||||||
suit.icon_state = "rig-medical"
|
suit.icon_state = "rig-medical"
|
||||||
suit.item_state = "medical_voidsuit"
|
suit.item_state = "rig-medical"
|
||||||
|
suit.item_state_slots[slot_r_hand_str] = "medical_voidsuit"
|
||||||
|
suit.item_state_slots[slot_l_hand_str] = "medical_voidsuit"
|
||||||
if("Security")
|
if("Security")
|
||||||
if(helmet)
|
if(helmet)
|
||||||
helmet.name = "security voidsuit helmet"
|
helmet.name = "security voidsuit helmet"
|
||||||
@@ -1009,7 +1015,9 @@
|
|||||||
if(suit)
|
if(suit)
|
||||||
suit.name = "security voidsuit"
|
suit.name = "security voidsuit"
|
||||||
suit.icon_state = "rig-sec"
|
suit.icon_state = "rig-sec"
|
||||||
suit.item_state = "sec_voidsuit"
|
suit.item_state = "rig-sec"
|
||||||
|
suit.item_state_slots[slot_r_hand_str] = "sec_voidsuit"
|
||||||
|
suit.item_state_slots[slot_l_hand_str] = "sec_voidsuit"
|
||||||
if("Crowd Control")
|
if("Crowd Control")
|
||||||
if(helmet)
|
if(helmet)
|
||||||
helmet.name = "crowd control voidsuit helmet"
|
helmet.name = "crowd control voidsuit helmet"
|
||||||
@@ -1018,7 +1026,9 @@
|
|||||||
if(suit)
|
if(suit)
|
||||||
suit.name = "crowd control voidsuit"
|
suit.name = "crowd control voidsuit"
|
||||||
suit.icon_state = "rig-sec_riot"
|
suit.icon_state = "rig-sec_riot"
|
||||||
suit.item_state = "sec_voidsuit_riot"
|
suit.item_state = "rig-sec_riot"
|
||||||
|
suit.item_state_slots[slot_r_hand_str] = "sec_voidsuit_riot"
|
||||||
|
suit.item_state_slots[slot_l_hand_str] = "sec_voidsuit_riot"
|
||||||
if("Atmos")
|
if("Atmos")
|
||||||
if(helmet)
|
if(helmet)
|
||||||
helmet.name = "atmospherics voidsuit helmet"
|
helmet.name = "atmospherics voidsuit helmet"
|
||||||
@@ -1027,7 +1037,9 @@
|
|||||||
if(suit)
|
if(suit)
|
||||||
suit.name = "atmospherics voidsuit"
|
suit.name = "atmospherics voidsuit"
|
||||||
suit.icon_state = "rig-atmos"
|
suit.icon_state = "rig-atmos"
|
||||||
suit.item_state = "atmos_voidsuit"
|
suit.item_state = "rig-atmos"
|
||||||
|
suit.item_state_slots[slot_r_hand_str] = "atmos_voidsuit"
|
||||||
|
suit.item_state_slots[slot_l_hand_str] = "atmos_voidsuit"
|
||||||
if("HAZMAT")
|
if("HAZMAT")
|
||||||
if(helmet)
|
if(helmet)
|
||||||
helmet.name = "HAZMAT voidsuit helmet"
|
helmet.name = "HAZMAT voidsuit helmet"
|
||||||
@@ -1036,7 +1048,9 @@
|
|||||||
if(suit)
|
if(suit)
|
||||||
suit.name = "HAZMAT voidsuit"
|
suit.name = "HAZMAT voidsuit"
|
||||||
suit.icon_state = "rig-engineering_rad"
|
suit.icon_state = "rig-engineering_rad"
|
||||||
suit.item_state = "eng_voidsuit_rad"
|
suit.item_state = "rig-engineering_rad"
|
||||||
|
suit.item_state_slots[slot_r_hand_str] = "eng_voidsuit_rad"
|
||||||
|
suit.item_state_slots[slot_l_hand_str] = "eng_voidsuit_rad"
|
||||||
if("Construction")
|
if("Construction")
|
||||||
if(helmet)
|
if(helmet)
|
||||||
helmet.name = "Construction voidsuit helmet"
|
helmet.name = "Construction voidsuit helmet"
|
||||||
@@ -1045,7 +1059,9 @@
|
|||||||
if(suit)
|
if(suit)
|
||||||
suit.name = "Construction voidsuit"
|
suit.name = "Construction voidsuit"
|
||||||
suit.icon_state = "rig-engineering_con"
|
suit.icon_state = "rig-engineering_con"
|
||||||
suit.item_state = "eng_voidsuit_con"
|
suit.item_state = "rig-engineering_con"
|
||||||
|
suit.item_state_slots[slot_r_hand_str] = "eng_voidsuit_con"
|
||||||
|
suit.item_state_slots[slot_l_hand_str] = "eng_voidsuit_con"
|
||||||
if("Biohazard")
|
if("Biohazard")
|
||||||
if(helmet)
|
if(helmet)
|
||||||
helmet.name = "Biohazard voidsuit helmet"
|
helmet.name = "Biohazard voidsuit helmet"
|
||||||
@@ -1054,7 +1070,9 @@
|
|||||||
if(suit)
|
if(suit)
|
||||||
suit.name = "Biohazard voidsuit"
|
suit.name = "Biohazard voidsuit"
|
||||||
suit.icon_state = "rig-medical_bio"
|
suit.icon_state = "rig-medical_bio"
|
||||||
suit.item_state = "medical_voidsuit_bio"
|
suit.item_state = "rig-medical_bio"
|
||||||
|
suit.item_state_slots[slot_r_hand_str] = "medical_voidsuit_bio"
|
||||||
|
suit.item_state_slots[slot_l_hand_str] = "medical_voidsuit_bio"
|
||||||
if("Emergency Medical Response")
|
if("Emergency Medical Response")
|
||||||
if(helmet)
|
if(helmet)
|
||||||
helmet.name = "emergency medical response voidsuit helmet"
|
helmet.name = "emergency medical response voidsuit helmet"
|
||||||
@@ -1063,7 +1081,9 @@
|
|||||||
if(suit)
|
if(suit)
|
||||||
suit.name = "emergency medical response voidsuit"
|
suit.name = "emergency medical response voidsuit"
|
||||||
suit.icon_state = "rig-medical_emt"
|
suit.icon_state = "rig-medical_emt"
|
||||||
suit.item_state = "medical_voidsuit_emt"
|
suit.item_state = "rig-medical_emt"
|
||||||
|
suit.item_state_slots[slot_r_hand_str] = "medical_voidsuit_emt"
|
||||||
|
suit.item_state_slots[slot_l_hand_str] = "medical_voidsuit_emt"
|
||||||
if("^%###^%$" || "Mercenary")
|
if("^%###^%$" || "Mercenary")
|
||||||
if(helmet)
|
if(helmet)
|
||||||
helmet.name = "blood-red voidsuit helmet"
|
helmet.name = "blood-red voidsuit helmet"
|
||||||
@@ -1071,8 +1091,10 @@
|
|||||||
helmet.item_state = "rig0-syndie"
|
helmet.item_state = "rig0-syndie"
|
||||||
if(suit)
|
if(suit)
|
||||||
suit.name = "blood-red voidsuit"
|
suit.name = "blood-red voidsuit"
|
||||||
suit.item_state = "syndie_voidsuit"
|
suit.item_state = "rig-syndie"
|
||||||
suit.icon_state = "rig-syndie"
|
suit.icon_state = "rig-syndie"
|
||||||
|
suit.item_state_slots[slot_r_hand_str] = "syndie_voidsuit"
|
||||||
|
suit.item_state_slots[slot_l_hand_str] = "syndie_voidsuit"
|
||||||
if("Charring")
|
if("Charring")
|
||||||
if(helmet)
|
if(helmet)
|
||||||
helmet.name = "soot-covered voidsuit helmet"
|
helmet.name = "soot-covered voidsuit helmet"
|
||||||
@@ -1082,6 +1104,8 @@
|
|||||||
suit.name = "soot-covered voidsuit"
|
suit.name = "soot-covered voidsuit"
|
||||||
suit.item_state = "rig-firebug"
|
suit.item_state = "rig-firebug"
|
||||||
suit.icon_state = "rig-firebug"
|
suit.icon_state = "rig-firebug"
|
||||||
|
suit.item_state_slots[slot_r_hand_str] = "rig-firebug"
|
||||||
|
suit.item_state_slots[slot_l_hand_str] = "rig-firebug"
|
||||||
|
|
||||||
if(helmet) helmet.name = "refitted [helmet.name]"
|
if(helmet) helmet.name = "refitted [helmet.name]"
|
||||||
if(suit) suit.name = "refitted [suit.name]"
|
if(suit) suit.name = "refitted [suit.name]"
|
||||||
|
|||||||
@@ -46,7 +46,7 @@
|
|||||||
return TRUE
|
return TRUE
|
||||||
|
|
||||||
/atom/movable/Destroy()
|
/atom/movable/Destroy()
|
||||||
unbuckle_mob()
|
unbuckle_all_mobs()
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -96,18 +96,18 @@ var/global/list/image/splatter_cache=list()
|
|||||||
S.overlays.Cut()
|
S.overlays.Cut()
|
||||||
S.overlays += S.blood_overlay
|
S.overlays += S.blood_overlay
|
||||||
S.blood_DNA |= blood_DNA.Copy()
|
S.blood_DNA |= blood_DNA.Copy()
|
||||||
|
perp.update_inv_shoes()
|
||||||
|
|
||||||
else if (hasfeet)//Or feet
|
else if (hasfeet)//Or feet
|
||||||
perp.feet_blood_color = basecolor
|
perp.feet_blood_color = basecolor
|
||||||
perp.track_blood = max(amount,perp.track_blood)
|
perp.track_blood = max(amount,perp.track_blood)
|
||||||
if(!perp.feet_blood_DNA)
|
LAZYINITLIST(perp.feet_blood_DNA)
|
||||||
perp.feet_blood_DNA = list()
|
|
||||||
perp.feet_blood_DNA |= blood_DNA.Copy()
|
perp.feet_blood_DNA |= blood_DNA.Copy()
|
||||||
|
perp.update_bloodied()
|
||||||
else if (perp.buckled && istype(perp.buckled, /obj/structure/bed/chair/wheelchair))
|
else if (perp.buckled && istype(perp.buckled, /obj/structure/bed/chair/wheelchair))
|
||||||
var/obj/structure/bed/chair/wheelchair/W = perp.buckled
|
var/obj/structure/bed/chair/wheelchair/W = perp.buckled
|
||||||
W.bloodiness = 4
|
W.bloodiness = 4
|
||||||
|
|
||||||
perp.update_inv_shoes(1)
|
|
||||||
amount--
|
amount--
|
||||||
|
|
||||||
/obj/effect/decal/cleanable/blood/proc/dry()
|
/obj/effect/decal/cleanable/blood/proc/dry()
|
||||||
|
|||||||
@@ -217,7 +217,7 @@
|
|||||||
/datum/poster/bay_44
|
/datum/poster/bay_44
|
||||||
icon_state="bsposter44"
|
icon_state="bsposter44"
|
||||||
name = "Time for a drink?"
|
name = "Time for a drink?"
|
||||||
desc = "This poster depicts a friendly-looking Tajara holding a tray of drinks."
|
desc = "This poster depicts a friendly-looking Tajaran holding a tray of drinks."
|
||||||
|
|
||||||
/datum/poster/bay_45
|
/datum/poster/bay_45
|
||||||
icon_state="bsposter45"
|
icon_state="bsposter45"
|
||||||
|
|||||||
@@ -69,7 +69,7 @@
|
|||||||
/* Species-specific sprites, concept stolen from Paradise//vg/.
|
/* Species-specific sprites, concept stolen from Paradise//vg/.
|
||||||
ex:
|
ex:
|
||||||
sprite_sheets = list(
|
sprite_sheets = list(
|
||||||
"Tajara" = 'icons/cat/are/bad'
|
SPECIES_TAJ = 'icons/cat/are/bad'
|
||||||
)
|
)
|
||||||
If index term exists and icon_override is not set, this sprite sheet will be used.
|
If index term exists and icon_override is not set, this sprite sheet will be used.
|
||||||
*/
|
*/
|
||||||
@@ -84,6 +84,9 @@
|
|||||||
var/reach = 1 // Length of tiles it can reach, 1 is adjacent.
|
var/reach = 1 // Length of tiles it can reach, 1 is adjacent.
|
||||||
var/addblends // Icon overlay for ADD highlights when applicable.
|
var/addblends // Icon overlay for ADD highlights when applicable.
|
||||||
|
|
||||||
|
var/icon/default_worn_icon //Default on-mob icon
|
||||||
|
var/worn_layer //Default on-mob layer
|
||||||
|
|
||||||
/obj/item/New()
|
/obj/item/New()
|
||||||
..()
|
..()
|
||||||
if(embed_chance < 0)
|
if(embed_chance < 0)
|
||||||
@@ -280,6 +283,7 @@
|
|||||||
// note this isn't called during the initial dressing of a player
|
// note this isn't called during the initial dressing of a player
|
||||||
/obj/item/proc/equipped(var/mob/user, var/slot)
|
/obj/item/proc/equipped(var/mob/user, var/slot)
|
||||||
hud_layerise()
|
hud_layerise()
|
||||||
|
user.position_hud_item(src,slot)
|
||||||
if(user.client) user.client.screen |= src
|
if(user.client) user.client.screen |= src
|
||||||
if(user.pulling == src) user.stop_pulling()
|
if(user.pulling == src) user.stop_pulling()
|
||||||
return
|
return
|
||||||
@@ -676,4 +680,116 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
|
|||||||
|
|
||||||
// My best guess as to why this is here would be that it does so little. Still, keep it under all the procs, for sanity's sake.
|
// My best guess as to why this is here would be that it does so little. Still, keep it under all the procs, for sanity's sake.
|
||||||
/obj/item/device
|
/obj/item/device
|
||||||
icon = 'icons/obj/device.dmi'
|
icon = 'icons/obj/device.dmi'
|
||||||
|
|
||||||
|
//Worn icon generation for on-mob sprites
|
||||||
|
/obj/item/proc/make_worn_icon(var/body_type,var/slot_name,var/inhands,var/default_icon,var/default_layer)
|
||||||
|
//Get the required information about the base icon
|
||||||
|
var/icon/icon2use = get_worn_icon_file(body_type = body_type, slot_name = slot_name, default_icon = default_icon, inhands = inhands)
|
||||||
|
var/state2use = get_worn_icon_state(slot_name = slot_name)
|
||||||
|
var/layer2use = get_worn_layer(default_layer = default_layer)
|
||||||
|
|
||||||
|
//Snowflakey inhand icons in a specific slot
|
||||||
|
if(inhands && icon2use == icon_override)
|
||||||
|
switch(slot_name)
|
||||||
|
if(slot_r_hand_str)
|
||||||
|
state2use += "_r"
|
||||||
|
if(slot_l_hand_str)
|
||||||
|
state2use += "_l"
|
||||||
|
|
||||||
|
// testing("[src] (\ref[src]) - Slot: [slot_name], Inhands: [inhands], Worn Icon:[icon2use], Worn State:[state2use], Worn Layer:[layer2use]")
|
||||||
|
|
||||||
|
//Generate the base onmob icon
|
||||||
|
var/icon/standing_icon = icon(icon = icon2use, icon_state = state2use)
|
||||||
|
|
||||||
|
if(!inhands)
|
||||||
|
apply_custom(standing_icon) //Pre-image overridable proc to customize the thing
|
||||||
|
apply_addblends(icon2use,standing_icon) //Some items have ICON_ADD blend shaders
|
||||||
|
|
||||||
|
var/image/standing = image(standing_icon)
|
||||||
|
standing.alpha = alpha
|
||||||
|
standing.color = color
|
||||||
|
standing.layer = layer2use
|
||||||
|
|
||||||
|
//Apply any special features
|
||||||
|
if(!inhands)
|
||||||
|
apply_blood(standing) //Some items show blood when bloodied
|
||||||
|
apply_accessories(standing) //Some items sport accessories like webbing
|
||||||
|
|
||||||
|
//Return our icon
|
||||||
|
return standing
|
||||||
|
|
||||||
|
//Returns the icon object that should be used for the worn icon
|
||||||
|
/obj/item/proc/get_worn_icon_file(var/body_type,var/slot_name,var/default_icon,var/inhands)
|
||||||
|
|
||||||
|
//1: icon_override var
|
||||||
|
if(icon_override)
|
||||||
|
return icon_override
|
||||||
|
|
||||||
|
//2: species-specific sprite sheets (skipped for inhands)
|
||||||
|
var/sheet = sprite_sheets[body_type]
|
||||||
|
if(sheet && !inhands)
|
||||||
|
return sheet
|
||||||
|
|
||||||
|
//3: slot-specific sprite sheets
|
||||||
|
sheet = item_icons[slot_name]
|
||||||
|
if(sheet)
|
||||||
|
return sheet
|
||||||
|
|
||||||
|
//4: item's default icon
|
||||||
|
if(default_worn_icon)
|
||||||
|
return default_worn_icon
|
||||||
|
|
||||||
|
//5: provided default_icon
|
||||||
|
if(default_icon)
|
||||||
|
return default_icon
|
||||||
|
|
||||||
|
//6: give up
|
||||||
|
return
|
||||||
|
|
||||||
|
//Returns the state that should be used for the worn icon
|
||||||
|
/obj/item/proc/get_worn_icon_state(var/slot_name)
|
||||||
|
|
||||||
|
//1: slot-specific sprite sheets
|
||||||
|
var/state = item_state_slots[slot_name]
|
||||||
|
if(state)
|
||||||
|
return state
|
||||||
|
|
||||||
|
//2: item_state variable
|
||||||
|
if(item_state)
|
||||||
|
return item_state
|
||||||
|
|
||||||
|
//3: icon_state variable
|
||||||
|
if(icon_state)
|
||||||
|
return icon_state
|
||||||
|
|
||||||
|
//Returns the layer that should be used for the worn icon (as a FLOAT_LAYER layer, so negative)
|
||||||
|
/obj/item/proc/get_worn_layer(var/default_layer = 0)
|
||||||
|
|
||||||
|
//1: worn_layer variable
|
||||||
|
if(!isnull(worn_layer)) //Can be zero, so...
|
||||||
|
return BODY_LAYER+worn_layer
|
||||||
|
|
||||||
|
//2: your default
|
||||||
|
return BODY_LAYER+default_layer
|
||||||
|
|
||||||
|
//Apply the addblend blends onto the icon
|
||||||
|
/obj/item/proc/apply_addblends(var/source_icon, var/icon/standing_icon)
|
||||||
|
|
||||||
|
//If we have addblends, blend them onto the provided icon
|
||||||
|
if(addblends && standing_icon && source_icon)
|
||||||
|
var/addblend_icon = icon("icon" = source_icon, "icon_state" = addblends)
|
||||||
|
standing_icon.Blend(addblend_icon, ICON_ADD)
|
||||||
|
|
||||||
|
//STUB
|
||||||
|
/obj/item/proc/apply_custom(var/icon/standing_icon)
|
||||||
|
return standing_icon
|
||||||
|
|
||||||
|
//STUB
|
||||||
|
/obj/item/proc/apply_blood(var/image/standing)
|
||||||
|
return standing
|
||||||
|
|
||||||
|
//STUB
|
||||||
|
/obj/item/proc/apply_accessories(var/image/standing)
|
||||||
|
return standing
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
item_state = "electronic"
|
item_state = "electronic"
|
||||||
w_class = ITEMSIZE_SMALL
|
w_class = ITEMSIZE_SMALL
|
||||||
slot_flags = SLOT_ID | SLOT_BELT
|
slot_flags = SLOT_ID | SLOT_BELT
|
||||||
sprite_sheets = list("Teshari" = 'icons/mob/species/seromi/id.dmi')
|
sprite_sheets = list(SPECIES_TESHARI = 'icons/mob/species/seromi/id.dmi')
|
||||||
|
|
||||||
//Main variables
|
//Main variables
|
||||||
var/pdachoice = 1
|
var/pdachoice = 1
|
||||||
|
|||||||
@@ -69,16 +69,17 @@
|
|||||||
im_list_ui[++im_list_ui.len] = list("address" = I["address"], "to_address" = I["to_address"], "im" = I["im"])
|
im_list_ui[++im_list_ui.len] = list("address" = I["address"], "to_address" = I["to_address"], "im" = I["im"])
|
||||||
|
|
||||||
//Weather reports.
|
//Weather reports.
|
||||||
for(var/datum/planet/planet in planet_controller.planets)
|
if(planet_controller)
|
||||||
if(planet.weather_holder && planet.weather_holder.current_weather)
|
for(var/datum/planet/planet in planet_controller.planets)
|
||||||
var/list/W = list(
|
if(planet.weather_holder && planet.weather_holder.current_weather)
|
||||||
"Planet" = planet.name,
|
var/list/W = list(
|
||||||
"Time" = planet.current_time.show_time("hh:mm"),
|
"Planet" = planet.name,
|
||||||
"Weather" = planet.weather_holder.current_weather.name,
|
"Time" = planet.current_time.show_time("hh:mm"),
|
||||||
"Temperature" = planet.weather_holder.temperature - T0C,
|
"Weather" = planet.weather_holder.current_weather.name,
|
||||||
"High" = planet.weather_holder.current_weather.temp_high - T0C,
|
"Temperature" = planet.weather_holder.temperature - T0C,
|
||||||
"Low" = planet.weather_holder.current_weather.temp_low - T0C)
|
"High" = planet.weather_holder.current_weather.temp_high - T0C,
|
||||||
weather[++weather.len] = W
|
"Low" = planet.weather_holder.current_weather.temp_low - T0C)
|
||||||
|
weather[++weather.len] = W
|
||||||
|
|
||||||
injection = "<div>Test</div>"
|
injection = "<div>Test</div>"
|
||||||
|
|
||||||
@@ -251,4 +252,4 @@
|
|||||||
set_light(fon * flum)
|
set_light(fon * flum)
|
||||||
|
|
||||||
nanomanager.update_uis(src)
|
nanomanager.update_uis(src)
|
||||||
add_fingerprint(usr)
|
add_fingerprint(usr)
|
||||||
|
|||||||
@@ -487,7 +487,6 @@
|
|||||||
|
|
||||||
M.timeofdeath = 0
|
M.timeofdeath = 0
|
||||||
M.stat = UNCONSCIOUS //Life() can bring them back to consciousness if it needs to.
|
M.stat = UNCONSCIOUS //Life() can bring them back to consciousness if it needs to.
|
||||||
M.regenerate_icons()
|
|
||||||
M.failed_last_breath = 0 //So mobs that died of oxyloss don't revive and have perpetual out of breath.
|
M.failed_last_breath = 0 //So mobs that died of oxyloss don't revive and have perpetual out of breath.
|
||||||
M.reload_fullscreen()
|
M.reload_fullscreen()
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
desc = "A kit containing all the needed tools and parts to modify a hardsuit for another user."
|
desc = "A kit containing all the needed tools and parts to modify a hardsuit for another user."
|
||||||
icon_state = "modkit"
|
icon_state = "modkit"
|
||||||
var/parts = MODKIT_FULL
|
var/parts = MODKIT_FULL
|
||||||
var/target_species = "Human"
|
var/target_species = SPECIES_HUMAN
|
||||||
|
|
||||||
var/list/permitted_types = list(
|
var/list/permitted_types = list(
|
||||||
/obj/item/clothing/head/helmet/space/void,
|
/obj/item/clothing/head/helmet/space/void,
|
||||||
@@ -69,4 +69,4 @@
|
|||||||
/obj/item/device/modkit/tajaran
|
/obj/item/device/modkit/tajaran
|
||||||
name = "tajaran hardsuit modification kit"
|
name = "tajaran hardsuit modification kit"
|
||||||
desc = "A kit containing all the needed tools and parts to modify a hardsuit for another user. This one looks like it's meant for Tajaran."
|
desc = "A kit containing all the needed tools and parts to modify a hardsuit for another user. This one looks like it's meant for Tajaran."
|
||||||
target_species = "Tajara"
|
target_species = SPECIES_TAJ
|
||||||
|
|||||||
@@ -3,11 +3,12 @@
|
|||||||
desc = "An updated, modular intercom that fits over the head. Takes encryption keys"
|
desc = "An updated, modular intercom that fits over the head. Takes encryption keys"
|
||||||
var/radio_desc = ""
|
var/radio_desc = ""
|
||||||
icon_state = "headset"
|
icon_state = "headset"
|
||||||
|
item_state = null //To remove the radio's state
|
||||||
matter = list(DEFAULT_WALL_MATERIAL = 75)
|
matter = list(DEFAULT_WALL_MATERIAL = 75)
|
||||||
subspace_transmission = 1
|
subspace_transmission = 1
|
||||||
canhear_range = 0 // can't hear headsets from very far away
|
canhear_range = 0 // can't hear headsets from very far away
|
||||||
slot_flags = SLOT_EARS
|
slot_flags = SLOT_EARS
|
||||||
sprite_sheets = list("Teshari" = 'icons/mob/species/seromi/ears.dmi')
|
sprite_sheets = list(SPECIES_TESHARI = 'icons/mob/species/seromi/ears.dmi')
|
||||||
|
|
||||||
var/translate_binary = 0
|
var/translate_binary = 0
|
||||||
var/translate_hive = 0
|
var/translate_hive = 0
|
||||||
@@ -63,6 +64,17 @@
|
|||||||
return ..(freq, level)
|
return ..(freq, level)
|
||||||
return -1
|
return -1
|
||||||
|
|
||||||
|
/obj/item/device/radio/headset/get_worn_icon_state(var/slot_name)
|
||||||
|
var/append = ""
|
||||||
|
if(icon_override)
|
||||||
|
switch(slot_name)
|
||||||
|
if(slot_l_ear_str)
|
||||||
|
append = "_l"
|
||||||
|
if(slot_r_ear_str)
|
||||||
|
append = "_r"
|
||||||
|
|
||||||
|
return "[..()][append]"
|
||||||
|
|
||||||
/obj/item/device/radio/headset/syndicate
|
/obj/item/device/radio/headset/syndicate
|
||||||
origin_tech = list(TECH_ILLEGAL = 3)
|
origin_tech = list(TECH_ILLEGAL = 3)
|
||||||
syndie = 1
|
syndie = 1
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ HALOGEN COUNTER - Radcount on mobs
|
|||||||
BR = M.getBruteLoss() > 50 ? "<font color='red'><b>Severe anatomical damage detected</b></font>" : "Subject brute-force injury status O.K"
|
BR = M.getBruteLoss() > 50 ? "<font color='red'><b>Severe anatomical damage detected</b></font>" : "Subject brute-force injury status O.K"
|
||||||
if(M.status_flags & FAKEDEATH)
|
if(M.status_flags & FAKEDEATH)
|
||||||
OX = fake_oxy > 50 ? "<span class='warning'>Severe oxygen deprivation detected</span>" : "Subject bloodstream oxygen level normal"
|
OX = fake_oxy > 50 ? "<span class='warning'>Severe oxygen deprivation detected</span>" : "Subject bloodstream oxygen level normal"
|
||||||
dat += "[OX] | [TX] | [BU] | [BR]"
|
dat += "[OX] | [TX] | [BU] | [BR]<br>"
|
||||||
if(M.radiation)
|
if(M.radiation)
|
||||||
if(advscan >= 2 && showadvscan == 1)
|
if(advscan >= 2 && showadvscan == 1)
|
||||||
var/severity = ""
|
var/severity = ""
|
||||||
|
|||||||
@@ -106,13 +106,13 @@
|
|||||||
if (M.use(1))
|
if (M.use(1))
|
||||||
var/obj/item/weapon/secbot_assembly/ed209_assembly/B = new /obj/item/weapon/secbot_assembly/ed209_assembly
|
var/obj/item/weapon/secbot_assembly/ed209_assembly/B = new /obj/item/weapon/secbot_assembly/ed209_assembly
|
||||||
B.loc = get_turf(src)
|
B.loc = get_turf(src)
|
||||||
user << "<span class='notice'>You armed the robot frame.</span>"
|
to_chat(user, "<span class='notice'>You armed the robot frame.</span>")
|
||||||
if (user.get_inactive_hand()==src)
|
if (user.get_inactive_hand()==src)
|
||||||
user.remove_from_mob(src)
|
user.remove_from_mob(src)
|
||||||
user.put_in_inactive_hand(B)
|
user.put_in_inactive_hand(B)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
else
|
else
|
||||||
user << "<span class='warning'>You need one sheet of metal to arm the robot frame.</span>"
|
to_chat(user, "<span class='warning'>You need one sheet of metal to arm the robot frame.</span>")
|
||||||
if(istype(W, /obj/item/robot_parts/l_leg))
|
if(istype(W, /obj/item/robot_parts/l_leg))
|
||||||
if(src.l_leg) return
|
if(src.l_leg) return
|
||||||
user.drop_item()
|
user.drop_item()
|
||||||
@@ -149,9 +149,9 @@
|
|||||||
src.chest = W
|
src.chest = W
|
||||||
src.updateicon()
|
src.updateicon()
|
||||||
else if(!W:wires)
|
else if(!W:wires)
|
||||||
user << "<span class='warning'>You need to attach wires to it first!</span>"
|
to_chat(user, "<span class='warning'>You need to attach wires to it first!</span>")
|
||||||
else
|
else
|
||||||
user << "<span class='warning'>You need to attach a cell to it first!</span>"
|
to_chat(user, "<span class='warning'>You need to attach a cell to it first!</span>")
|
||||||
|
|
||||||
if(istype(W, /obj/item/robot_parts/head))
|
if(istype(W, /obj/item/robot_parts/head))
|
||||||
if(src.head) return
|
if(src.head) return
|
||||||
@@ -161,16 +161,16 @@
|
|||||||
src.head = W
|
src.head = W
|
||||||
src.updateicon()
|
src.updateicon()
|
||||||
else
|
else
|
||||||
user << "<span class='warning'>You need to attach a flash to it first!</span>"
|
to_chat(user, "<span class='warning'>You need to attach a flash to it first!</span>")
|
||||||
|
|
||||||
if(istype(W, /obj/item/device/mmi))
|
if(istype(W, /obj/item/device/mmi))
|
||||||
var/obj/item/device/mmi/M = W
|
var/obj/item/device/mmi/M = W
|
||||||
if(check_completion())
|
if(check_completion())
|
||||||
if(!istype(loc,/turf))
|
if(!istype(loc,/turf))
|
||||||
user << "<span class='warning'>You can't put \the [W] in, the frame has to be standing on the ground to be perfectly precise.</span>"
|
to_chat(user, "<span class='warning'>You can't put \the [W] in, the frame has to be standing on the ground to be perfectly precise.</span>")
|
||||||
return
|
return
|
||||||
if(!M.brainmob)
|
if(!M.brainmob)
|
||||||
user << "<span class='warning'>Sticking an empty [W] into the frame would sort of defeat the purpose.</span>"
|
to_chat(user, "<span class='warning'>Sticking an empty [W] into the frame would sort of defeat the purpose.</span>")
|
||||||
return
|
return
|
||||||
if(!M.brainmob.key)
|
if(!M.brainmob.key)
|
||||||
var/ghost_can_reenter = 0
|
var/ghost_can_reenter = 0
|
||||||
@@ -181,15 +181,15 @@
|
|||||||
to_chat(user, "<span class='notice'>\The [W] is completely unresponsive; though it may be able to auto-resuscitate.</span>") //Jamming a ghosted brain into a borg is likely detrimental, and may result in some problems.
|
to_chat(user, "<span class='notice'>\The [W] is completely unresponsive; though it may be able to auto-resuscitate.</span>") //Jamming a ghosted brain into a borg is likely detrimental, and may result in some problems.
|
||||||
return
|
return
|
||||||
if(!ghost_can_reenter)
|
if(!ghost_can_reenter)
|
||||||
user << "<span class='notice'>\The [W] is completely unresponsive; there's no point.</span>"
|
to_chat(user, "<span class='notice'>\The [W] is completely unresponsive; there's no point.</span>")
|
||||||
return
|
return
|
||||||
|
|
||||||
if(M.brainmob.stat == DEAD)
|
if(M.brainmob.stat == DEAD)
|
||||||
user << "<span class='warning'>Sticking a dead [W] into the frame would sort of defeat the purpose.</span>"
|
to_chat(user, "<span class='warning'>Sticking a dead [W] into the frame would sort of defeat the purpose.</span>")
|
||||||
return
|
return
|
||||||
|
|
||||||
if(jobban_isbanned(M.brainmob, "Cyborg"))
|
if(jobban_isbanned(M.brainmob, "Cyborg"))
|
||||||
user << "<span class='warning'>This [W] does not seem to fit.</span>"
|
to_chat(user, "<span class='warning'>This [W] does not seem to fit.</span>")
|
||||||
return
|
return
|
||||||
|
|
||||||
var/mob/living/silicon/robot/O = new /mob/living/silicon/robot(get_turf(loc), unfinished = 1)
|
var/mob/living/silicon/robot/O = new /mob/living/silicon/robot(get_turf(loc), unfinished = 1)
|
||||||
@@ -228,7 +228,7 @@
|
|||||||
|
|
||||||
qdel(src)
|
qdel(src)
|
||||||
else
|
else
|
||||||
user << "<span class='warning'>The MMI must go in after everything else!</span>"
|
to_chat(user, "<span class='warning'>The MMI must go in after everything else!</span>")
|
||||||
|
|
||||||
if (istype(W, /obj/item/weapon/pen))
|
if (istype(W, /obj/item/weapon/pen))
|
||||||
var/t = sanitizeSafe(input(user, "Enter new robot name", src.name, src.created_name), MAX_NAME_LEN)
|
var/t = sanitizeSafe(input(user, "Enter new robot name", src.name, src.created_name), MAX_NAME_LEN)
|
||||||
@@ -245,22 +245,22 @@
|
|||||||
..()
|
..()
|
||||||
if(istype(W, /obj/item/weapon/cell))
|
if(istype(W, /obj/item/weapon/cell))
|
||||||
if(src.cell)
|
if(src.cell)
|
||||||
user << "<span class='warning'>You have already inserted a cell!</span>"
|
to_chat(user, "<span class='warning'>You have already inserted a cell!</span>")
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
user.drop_item()
|
user.drop_item()
|
||||||
W.loc = src
|
W.loc = src
|
||||||
src.cell = W
|
src.cell = W
|
||||||
user << "<span class='notice'>You insert the cell!</span>"
|
to_chat(user, "<span class='notice'>You insert the cell!</span>")
|
||||||
if(istype(W, /obj/item/stack/cable_coil))
|
if(istype(W, /obj/item/stack/cable_coil))
|
||||||
if(src.wires)
|
if(src.wires)
|
||||||
user << "<span class='warning'>You have already inserted wire!</span>"
|
to_chat(user, "<span class='warning'>You have already inserted wire!</span>")
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
var/obj/item/stack/cable_coil/coil = W
|
var/obj/item/stack/cable_coil/coil = W
|
||||||
coil.use(1)
|
coil.use(1)
|
||||||
src.wires = 1.0
|
src.wires = 1.0
|
||||||
user << "<span class='notice'>You insert the wire!</span>"
|
to_chat(user, "<span class='notice'>You insert the wire!</span>")
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/item/robot_parts/head/attackby(obj/item/W as obj, mob/user as mob)
|
/obj/item/robot_parts/head/attackby(obj/item/W as obj, mob/user as mob)
|
||||||
@@ -269,14 +269,14 @@
|
|||||||
if(istype(user,/mob/living/silicon/robot))
|
if(istype(user,/mob/living/silicon/robot))
|
||||||
var/current_module = user.get_active_hand()
|
var/current_module = user.get_active_hand()
|
||||||
if(current_module == W)
|
if(current_module == W)
|
||||||
user << "<span class='warning'>How do you propose to do that?</span>"
|
to_chat(user, "<span class='warning'>How do you propose to do that?</span>")
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
add_flashes(W,user)
|
add_flashes(W,user)
|
||||||
else
|
else
|
||||||
add_flashes(W,user)
|
add_flashes(W,user)
|
||||||
else if(istype(W, /obj/item/weapon/stock_parts/manipulator))
|
else if(istype(W, /obj/item/weapon/stock_parts/manipulator))
|
||||||
user << "<span class='notice'>You install some manipulators and modify the head, creating a functional spider-bot!</span>"
|
to_chat(user, "<span class='notice'>You install some manipulators and modify the head, creating a functional spider-bot!</span>")
|
||||||
new /mob/living/simple_animal/spiderbot(get_turf(loc))
|
new /mob/living/simple_animal/spiderbot(get_turf(loc))
|
||||||
user.drop_item()
|
user.drop_item()
|
||||||
qdel(W)
|
qdel(W)
|
||||||
@@ -286,24 +286,24 @@
|
|||||||
|
|
||||||
/obj/item/robot_parts/head/proc/add_flashes(obj/item/W as obj, mob/user as mob) //Made into a seperate proc to avoid copypasta
|
/obj/item/robot_parts/head/proc/add_flashes(obj/item/W as obj, mob/user as mob) //Made into a seperate proc to avoid copypasta
|
||||||
if(src.flash1 && src.flash2)
|
if(src.flash1 && src.flash2)
|
||||||
user << "<span class='notice'>You have already inserted the eyes!</span>"
|
to_chat(user, "<span class='notice'>You have already inserted the eyes!</span>")
|
||||||
return
|
return
|
||||||
else if(src.flash1)
|
else if(src.flash1)
|
||||||
user.drop_item()
|
user.drop_item()
|
||||||
W.loc = src
|
W.loc = src
|
||||||
src.flash2 = W
|
src.flash2 = W
|
||||||
user << "<span class='notice'>You insert the flash into the eye socket!</span>"
|
to_chat(user, "<span class='notice'>You insert the flash into the eye socket!</span>")
|
||||||
else
|
else
|
||||||
user.drop_item()
|
user.drop_item()
|
||||||
W.loc = src
|
W.loc = src
|
||||||
src.flash1 = W
|
src.flash1 = W
|
||||||
user << "<span class='notice'>You insert the flash into the eye socket!</span>"
|
to_chat(user, "<span class='notice'>You insert the flash into the eye socket!</span>")
|
||||||
|
|
||||||
|
|
||||||
/obj/item/robot_parts/emag_act(var/remaining_charges, var/mob/user)
|
/obj/item/robot_parts/emag_act(var/remaining_charges, var/mob/user)
|
||||||
if(sabotaged)
|
if(sabotaged)
|
||||||
user << "<span class='warning'>[src] is already sabotaged!</span>"
|
to_chat(user, "<span class='warning'>[src] is already sabotaged!</span>")
|
||||||
else
|
else
|
||||||
user << "<span class='warning'>You short out the safeties.</span>"
|
to_chat(user, "<span class='warning'>You short out the safeties.</span>")
|
||||||
sabotaged = 1
|
sabotaged = 1
|
||||||
return 1
|
return 1
|
||||||
|
|||||||
@@ -210,6 +210,7 @@
|
|||||||
R.add_language(LANGUAGE_TRADEBAND, 1)
|
R.add_language(LANGUAGE_TRADEBAND, 1)
|
||||||
R.add_language(LANGUAGE_UNATHI, 1)
|
R.add_language(LANGUAGE_UNATHI, 1)
|
||||||
R.add_language(LANGUAGE_SIIK, 1)
|
R.add_language(LANGUAGE_SIIK, 1)
|
||||||
|
R.add_language(LANGUAGE_AKHANI, 1)
|
||||||
R.add_language(LANGUAGE_SKRELLIAN, 1)
|
R.add_language(LANGUAGE_SKRELLIAN, 1)
|
||||||
R.add_language(LANGUAGE_SKRELLIANFAR, 0)
|
R.add_language(LANGUAGE_SKRELLIANFAR, 0)
|
||||||
R.add_language(LANGUAGE_GUTTER, 1)
|
R.add_language(LANGUAGE_GUTTER, 1)
|
||||||
|
|||||||
@@ -89,6 +89,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
|||||||
var/weldermes = "USER lights NAME with FLAME"
|
var/weldermes = "USER lights NAME with FLAME"
|
||||||
var/ignitermes = "USER lights NAME with FLAME"
|
var/ignitermes = "USER lights NAME with FLAME"
|
||||||
var/brand
|
var/brand
|
||||||
|
blood_sprite_state = null //Can't bloody these
|
||||||
|
|
||||||
/obj/item/clothing/mask/smokable/New()
|
/obj/item/clothing/mask/smokable/New()
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -18,7 +18,13 @@
|
|||||||
var/cuff_sound = 'sound/weapons/handcuffs.ogg'
|
var/cuff_sound = 'sound/weapons/handcuffs.ogg'
|
||||||
var/cuff_type = "handcuffs"
|
var/cuff_type = "handcuffs"
|
||||||
var/use_time = 30
|
var/use_time = 30
|
||||||
sprite_sheets = list("Teshari" = 'icons/mob/species/seromi/handcuffs.dmi')
|
sprite_sheets = list(SPECIES_TESHARI = 'icons/mob/species/seromi/handcuffs.dmi')
|
||||||
|
|
||||||
|
/obj/item/weapon/handcuffs/get_worn_icon_state(var/slot_name)
|
||||||
|
if(slot_name == slot_handcuffed_str)
|
||||||
|
return "handcuff1" //Simple
|
||||||
|
|
||||||
|
return ..()
|
||||||
|
|
||||||
/obj/item/weapon/handcuffs/attack(var/mob/living/carbon/C, var/mob/living/user)
|
/obj/item/weapon/handcuffs/attack(var/mob/living/carbon/C, var/mob/living/user)
|
||||||
|
|
||||||
@@ -95,6 +101,13 @@
|
|||||||
target.update_inv_handcuffed()
|
target.update_inv_handcuffed()
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
/obj/item/weapon/handcuffs/equipped(var/mob/living/user,var/slot)
|
||||||
|
. = ..()
|
||||||
|
if(slot == slot_handcuffed)
|
||||||
|
user.drop_r_hand()
|
||||||
|
user.drop_l_hand()
|
||||||
|
user.stop_pulling()
|
||||||
|
|
||||||
var/last_chew = 0
|
var/last_chew = 0
|
||||||
/mob/living/carbon/human/RestrainedClickOn(var/atom/A)
|
/mob/living/carbon/human/RestrainedClickOn(var/atom/A)
|
||||||
if (A != src) return ..()
|
if (A != src) return ..()
|
||||||
@@ -111,7 +124,7 @@ var/last_chew = 0
|
|||||||
if (!O) return
|
if (!O) return
|
||||||
|
|
||||||
var/datum/gender/T = gender_datums[H.get_visible_gender()]
|
var/datum/gender/T = gender_datums[H.get_visible_gender()]
|
||||||
|
|
||||||
var/s = "<span class='warning'>[H.name] chews on [T.his] [O.name]!</span>"
|
var/s = "<span class='warning'>[H.name] chews on [T.his] [O.name]!</span>"
|
||||||
H.visible_message(s, "<span class='warning'>You chew on your [O.name]!</span>")
|
H.visible_message(s, "<span class='warning'>You chew on your [O.name]!</span>")
|
||||||
add_attack_logs(H,H,"chewed own [O.name]")
|
add_attack_logs(H,H,"chewed own [O.name]")
|
||||||
@@ -207,6 +220,12 @@ var/last_chew = 0
|
|||||||
breakouttime = 30
|
breakouttime = 30
|
||||||
cuff_sound = 'sound/weapons/towelwipe.ogg' //Is there anything this sound can't do?
|
cuff_sound = 'sound/weapons/towelwipe.ogg' //Is there anything this sound can't do?
|
||||||
|
|
||||||
|
/obj/item/weapon/handcuffs/legcuffs/get_worn_icon_state(var/slot_name)
|
||||||
|
if(slot_name == slot_legcuffed_str)
|
||||||
|
return "legcuff1"
|
||||||
|
|
||||||
|
return ..()
|
||||||
|
|
||||||
/obj/item/weapon/handcuffs/legcuffs/bola/can_place(var/mob/target, var/mob/user)
|
/obj/item/weapon/handcuffs/legcuffs/bola/can_place(var/mob/target, var/mob/user)
|
||||||
if(user) //A ranged legcuff, until proper implementation as items it remains a projectile-only thing.
|
if(user) //A ranged legcuff, until proper implementation as items it remains a projectile-only thing.
|
||||||
return 1
|
return 1
|
||||||
@@ -298,3 +317,11 @@ var/last_chew = 0
|
|||||||
target.legcuffed = lcuffs
|
target.legcuffed = lcuffs
|
||||||
target.update_inv_legcuffed()
|
target.update_inv_legcuffed()
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
/obj/item/weapon/handcuffs/legcuffs/equipped(var/mob/living/user,var/slot)
|
||||||
|
. = ..()
|
||||||
|
if(slot == slot_legcuffed)
|
||||||
|
if(user.m_intent != "walk")
|
||||||
|
user.m_intent = "walk"
|
||||||
|
if(user.hud_used && user.hud_used.move_intent)
|
||||||
|
user.hud_used.move_intent.icon_state = "walking"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
item_state = "card-id"
|
item_state = "card-id"
|
||||||
|
|
||||||
sprite_sheets = list(
|
sprite_sheets = list(
|
||||||
"Teshari" = 'icons/mob/species/seromi/id.dmi'
|
SPECIES_TESHARI = 'icons/mob/species/seromi/id.dmi'
|
||||||
)
|
)
|
||||||
|
|
||||||
var/access = list()
|
var/access = list()
|
||||||
@@ -113,6 +113,12 @@
|
|||||||
usr << "The fingerprint hash on the card is [fingerprint_hash]."
|
usr << "The fingerprint hash on the card is [fingerprint_hash]."
|
||||||
return
|
return
|
||||||
|
|
||||||
|
/obj/item/weapon/card/id/get_worn_icon_state(var/slot_name)
|
||||||
|
if(slot_name == slot_wear_id_str)
|
||||||
|
return "id" //Legacy, just how it is. There's only one sprite.
|
||||||
|
|
||||||
|
return ..()
|
||||||
|
|
||||||
/obj/item/weapon/card/id/initialize()
|
/obj/item/weapon/card/id/initialize()
|
||||||
. = ..()
|
. = ..()
|
||||||
var/datum/job/J = job_master.GetJob(rank)
|
var/datum/job/J = job_master.GetJob(rank)
|
||||||
|
|||||||
@@ -100,7 +100,7 @@
|
|||||||
user.put_in_hands(S)
|
user.put_in_hands(S)
|
||||||
else
|
else
|
||||||
visible_message("[user] starts compacting the snowball.", "You start compacting the snowball.")
|
visible_message("[user] starts compacting the snowball.", "You start compacting the snowball.")
|
||||||
if(do_after(user, 2000))
|
if(do_after(user, 2 SECONDS))
|
||||||
var/atom/S = new /obj/item/weapon/material/snow/snowball/reinforced(user.loc)
|
var/atom/S = new /obj/item/weapon/material/snow/snowball/reinforced(user.loc)
|
||||||
del(src)
|
del(src)
|
||||||
user.put_in_hands(S)
|
user.put_in_hands(S)
|
||||||
@@ -108,6 +108,6 @@
|
|||||||
/obj/item/weapon/material/snow/snowball/reinforced
|
/obj/item/weapon/material/snow/snowball/reinforced
|
||||||
name = "snowball"
|
name = "snowball"
|
||||||
desc = "A well-formed and fun snowball. It looks kind of dangerous."
|
desc = "A well-formed and fun snowball. It looks kind of dangerous."
|
||||||
icon_state = "snowball-reinf"
|
//icon_state = "reinf-snowball"
|
||||||
force_divisor = 0.20
|
force_divisor = 0.20
|
||||||
thrown_force_divisor = 0.25
|
thrown_force_divisor = 0.25
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
icon = 'icons/obj/clothing/backpack.dmi'
|
icon = 'icons/obj/clothing/backpack.dmi'
|
||||||
icon_state = "backpack"
|
icon_state = "backpack"
|
||||||
sprite_sheets = list(
|
sprite_sheets = list(
|
||||||
"Teshari" = 'icons/mob/species/seromi/back.dmi'
|
SPECIES_TESHARI = 'icons/mob/species/seromi/back.dmi'
|
||||||
)
|
)
|
||||||
w_class = ITEMSIZE_LARGE
|
w_class = ITEMSIZE_LARGE
|
||||||
slot_flags = SLOT_BACK
|
slot_flags = SLOT_BACK
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
max_w_class = ITEMSIZE_NORMAL
|
max_w_class = ITEMSIZE_NORMAL
|
||||||
slot_flags = SLOT_BELT
|
slot_flags = SLOT_BELT
|
||||||
attack_verb = list("whipped", "lashed", "disciplined")
|
attack_verb = list("whipped", "lashed", "disciplined")
|
||||||
sprite_sheets = list("Teshari" = 'icons/mob/species/seromi/belt.dmi')
|
sprite_sheets = list(SPECIES_TESHARI = 'icons/mob/species/seromi/belt.dmi')
|
||||||
|
|
||||||
var/show_above_suit = 0
|
var/show_above_suit = 0
|
||||||
|
|
||||||
@@ -22,6 +22,16 @@
|
|||||||
show_above_suit = !show_above_suit
|
show_above_suit = !show_above_suit
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
|
//Some belts have sprites to show icons
|
||||||
|
/obj/item/weapon/storage/belt/make_worn_icon(var/body_type,var/slot_name,var/inhands,var/default_icon,var/default_layer = 0)
|
||||||
|
var/image/standing = ..()
|
||||||
|
if(!inhands && contents.len)
|
||||||
|
for(var/obj/item/i in contents)
|
||||||
|
var/i_state = i.item_state
|
||||||
|
if(!i_state) i_state = i.icon_state
|
||||||
|
standing.add_overlay(image(icon = INV_BELT_DEF_ICON, icon_state = i_state))
|
||||||
|
return standing
|
||||||
|
|
||||||
/obj/item/weapon/storage/update_icon()
|
/obj/item/weapon/storage/update_icon()
|
||||||
if (ismob(src.loc))
|
if (ismob(src.loc))
|
||||||
var/mob/M = src.loc
|
var/mob/M = src.loc
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
name = "box"
|
name = "box"
|
||||||
desc = "It's just an ordinary box."
|
desc = "It's just an ordinary box."
|
||||||
icon_state = "box"
|
icon_state = "box"
|
||||||
item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit")
|
item_state = "syringe_kit"
|
||||||
var/foldable = /obj/item/stack/material/cardboard // BubbleWrap - if set, can be folded (when empty) into a sheet of cardboard
|
var/foldable = /obj/item/stack/material/cardboard // BubbleWrap - if set, can be folded (when empty) into a sheet of cardboard
|
||||||
max_w_class = ITEMSIZE_SMALL
|
max_w_class = ITEMSIZE_SMALL
|
||||||
max_storage_space = INVENTORY_BOX_SPACE
|
max_storage_space = INVENTORY_BOX_SPACE
|
||||||
|
|||||||
@@ -354,12 +354,10 @@
|
|||||||
//such as when picking up all the items on a tile with one click.
|
//such as when picking up all the items on a tile with one click.
|
||||||
/obj/item/weapon/storage/proc/handle_item_insertion(obj/item/W as obj, prevent_warning = 0)
|
/obj/item/weapon/storage/proc/handle_item_insertion(obj/item/W as obj, prevent_warning = 0)
|
||||||
if(!istype(W)) return 0
|
if(!istype(W)) return 0
|
||||||
|
|
||||||
if(usr)
|
if(usr)
|
||||||
usr.remove_from_mob(W)
|
usr.remove_from_mob(W,target = src) //If given a target, handles forceMove()
|
||||||
usr.update_icons() //update our overlays
|
W.on_enter_storage(src)
|
||||||
W.forceMove(src)
|
|
||||||
W.on_enter_storage(src)
|
|
||||||
if(usr)
|
|
||||||
if (usr.client && usr.s_active != src)
|
if (usr.client && usr.s_active != src)
|
||||||
usr.client.screen -= W
|
usr.client.screen -= W
|
||||||
W.dropped(usr)
|
W.dropped(usr)
|
||||||
@@ -377,6 +375,10 @@
|
|||||||
src.orient2hud(usr)
|
src.orient2hud(usr)
|
||||||
if(usr.s_active)
|
if(usr.s_active)
|
||||||
usr.s_active.show_to(usr)
|
usr.s_active.show_to(usr)
|
||||||
|
else
|
||||||
|
W.forceMove(src)
|
||||||
|
W.on_enter_storage(src)
|
||||||
|
|
||||||
update_icon()
|
update_icon()
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
|||||||
@@ -63,6 +63,12 @@
|
|||||||
T.dismantle_wall(1)
|
T.dismantle_wall(1)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
|
/obj/item/weapon/syndie/c4explosive/attackby(obj/item/weapon/W, mob/user)
|
||||||
|
if(istype(W, /obj/item/weapon/flame/lighter/zippo/c4detonator))
|
||||||
|
var/obj/item/weapon/flame/lighter/zippo/c4detonator/D = W
|
||||||
|
D.bomb = src
|
||||||
|
return
|
||||||
|
..()
|
||||||
|
|
||||||
/*Detonator, disguised as a lighter*/
|
/*Detonator, disguised as a lighter*/
|
||||||
/*Click it when closed to open, when open to bring up a prompt asking you if you want to close it or press the button.*/
|
/*Click it when closed to open, when open to bring up a prompt asking you if you want to close it or press the button.*/
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ var/list/global/tank_gauge_cache = list()
|
|||||||
name = "tank"
|
name = "tank"
|
||||||
icon = 'icons/obj/tank.dmi'
|
icon = 'icons/obj/tank.dmi'
|
||||||
sprite_sheets = list(
|
sprite_sheets = list(
|
||||||
"Teshari" = 'icons/mob/species/seromi/back.dmi'
|
SPECIES_TESHARI = 'icons/mob/species/seromi/back.dmi'
|
||||||
)
|
)
|
||||||
|
|
||||||
var/gauge_icon = "indicator_tank"
|
var/gauge_icon = "indicator_tank"
|
||||||
|
|||||||
@@ -236,7 +236,7 @@
|
|||||||
..()
|
..()
|
||||||
|
|
||||||
/obj/item/weapon/wirecutters/attack(mob/living/carbon/C as mob, mob/user as mob)
|
/obj/item/weapon/wirecutters/attack(mob/living/carbon/C as mob, mob/user as mob)
|
||||||
if(user.a_intent == I_HELP && (C.handcuffed) && (istype(C.handcuffed, /obj/item/weapon/handcuffs/cable)))
|
if(istype(C) && user.a_intent == I_HELP && (C.handcuffed) && (istype(C.handcuffed, /obj/item/weapon/handcuffs/cable)))
|
||||||
usr.visible_message("\The [usr] cuts \the [C]'s restraints with \the [src]!",\
|
usr.visible_message("\The [usr] cuts \the [C]'s restraints with \the [src]!",\
|
||||||
"You cut \the [C]'s restraints with \the [src]!",\
|
"You cut \the [C]'s restraints with \the [src]!",\
|
||||||
"You hear cable being cut.")
|
"You hear cable being cut.")
|
||||||
|
|||||||
138
code/game/objects/random/_random.dm
Normal file
138
code/game/objects/random/_random.dm
Normal file
@@ -0,0 +1,138 @@
|
|||||||
|
/obj/random
|
||||||
|
name = "random object"
|
||||||
|
desc = "This item type is used to spawn random objects at round-start"
|
||||||
|
icon = 'icons/misc/mark.dmi'
|
||||||
|
icon_state = "rup"
|
||||||
|
var/spawn_nothing_percentage = 0 // this variable determines the likelyhood that this random object will not spawn anything
|
||||||
|
|
||||||
|
// creates a new object and deletes itself
|
||||||
|
/obj/random/New()
|
||||||
|
..()
|
||||||
|
spawn()
|
||||||
|
if(istype(src.loc, /obj/structure/loot_pile)) //Spawning from a lootpile is weird, need to wait until we're out of it to do our work.
|
||||||
|
while(istype(src.loc, /obj/structure/loot_pile))
|
||||||
|
sleep(1)
|
||||||
|
if (!prob(spawn_nothing_percentage))
|
||||||
|
spawn_item()
|
||||||
|
qdel(src)
|
||||||
|
|
||||||
|
// this function should return a specific item to spawn
|
||||||
|
/obj/random/proc/item_to_spawn()
|
||||||
|
return 0
|
||||||
|
|
||||||
|
// creates the random item
|
||||||
|
/obj/random/proc/spawn_item()
|
||||||
|
var/build_path = item_to_spawn()
|
||||||
|
|
||||||
|
var/atom/A = new build_path(src.loc)
|
||||||
|
if(pixel_x || pixel_y)
|
||||||
|
A.pixel_x = pixel_x
|
||||||
|
A.pixel_y = pixel_y
|
||||||
|
|
||||||
|
var/list/random_junk_
|
||||||
|
var/list/random_useful_
|
||||||
|
/proc/get_random_useful_type()
|
||||||
|
if(!random_useful_)
|
||||||
|
random_useful_ = subtypesof(/obj/item/weapon/pen/crayon)
|
||||||
|
random_useful_ += /obj/item/weapon/pen
|
||||||
|
random_useful_ += /obj/item/weapon/pen/blue
|
||||||
|
random_useful_ += /obj/item/weapon/pen/red
|
||||||
|
random_useful_ += /obj/item/weapon/pen/multi
|
||||||
|
random_useful_ += /obj/item/weapon/storage/box/matches
|
||||||
|
random_useful_ += /obj/item/stack/material/cardboard
|
||||||
|
return pick(random_useful_)
|
||||||
|
|
||||||
|
/proc/get_random_junk_type()
|
||||||
|
if(prob(20)) // Misc. clutter
|
||||||
|
return /obj/effect/decal/cleanable/generic
|
||||||
|
if(prob(70)) // Misc. junk
|
||||||
|
if(!random_junk_)
|
||||||
|
random_junk_ = subtypesof(/obj/item/trash)
|
||||||
|
random_junk_ += typesof(/obj/item/weapon/cigbutt)
|
||||||
|
random_junk_ += /obj/effect/decal/cleanable/spiderling_remains
|
||||||
|
random_junk_ += /obj/effect/decal/remains/mouse
|
||||||
|
random_junk_ += /obj/effect/decal/remains/robot
|
||||||
|
random_junk_ += /obj/item/weapon/paper/crumpled
|
||||||
|
random_junk_ += /obj/item/inflatable/torn
|
||||||
|
random_junk_ += /obj/effect/decal/cleanable/molten_item
|
||||||
|
random_junk_ += /obj/item/weapon/material/shard
|
||||||
|
|
||||||
|
random_junk_ -= /obj/item/trash/plate
|
||||||
|
random_junk_ -= /obj/item/trash/snack_bowl
|
||||||
|
random_junk_ -= /obj/item/trash/syndi_cakes
|
||||||
|
random_junk_ -= /obj/item/trash/tray
|
||||||
|
return pick(random_junk_)
|
||||||
|
// Misc. actually useful stuff
|
||||||
|
return get_random_useful_type()
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
/obj/random/single
|
||||||
|
name = "randomly spawned object"
|
||||||
|
desc = "This item type is used to randomly spawn a given object at round-start"
|
||||||
|
icon_state = "x3"
|
||||||
|
var/spawn_object = null
|
||||||
|
|
||||||
|
/obj/random/single/item_to_spawn()
|
||||||
|
return ispath(spawn_object) ? spawn_object : text2path(spawn_object)
|
||||||
|
|
||||||
|
//Multiple Object Spawn
|
||||||
|
|
||||||
|
/obj/random/multiple
|
||||||
|
|
||||||
|
/obj/random/multiple/spawn_item()
|
||||||
|
var/list/things_to_make = item_to_spawn()
|
||||||
|
for(var/new_type in things_to_make)
|
||||||
|
new new_type(src.loc)
|
||||||
|
|
||||||
|
/*
|
||||||
|
// Multi Point Spawn
|
||||||
|
// Selects one spawn point out of a group of points with the same ID and asks it to generate its items
|
||||||
|
*/
|
||||||
|
var/list/multi_point_spawns
|
||||||
|
|
||||||
|
/obj/random_multi
|
||||||
|
name = "random object spawn point"
|
||||||
|
desc = "This item type is used to spawn random objects at round-start. Only one spawn point for a given group id is selected."
|
||||||
|
icon = 'icons/misc/mark.dmi'
|
||||||
|
icon_state = "x3"
|
||||||
|
invisibility = INVISIBILITY_MAXIMUM
|
||||||
|
var/id // Group id
|
||||||
|
var/weight // Probability weight for this spawn point
|
||||||
|
|
||||||
|
/obj/random_multi/initialize()
|
||||||
|
. = ..()
|
||||||
|
weight = max(1, round(weight))
|
||||||
|
|
||||||
|
if(!multi_point_spawns)
|
||||||
|
multi_point_spawns = list()
|
||||||
|
var/list/spawnpoints = multi_point_spawns[id]
|
||||||
|
if(!spawnpoints)
|
||||||
|
spawnpoints = list()
|
||||||
|
multi_point_spawns[id] = spawnpoints
|
||||||
|
spawnpoints[src] = weight
|
||||||
|
|
||||||
|
/obj/random_multi/Destroy()
|
||||||
|
var/list/spawnpoints = multi_point_spawns[id]
|
||||||
|
spawnpoints -= src
|
||||||
|
if(!spawnpoints.len)
|
||||||
|
multi_point_spawns -= id
|
||||||
|
. = ..()
|
||||||
|
|
||||||
|
/obj/random_multi/proc/generate_items()
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/random_multi/single_item
|
||||||
|
var/item_path // Item type to spawn
|
||||||
|
|
||||||
|
/obj/random_multi/single_item/generate_items()
|
||||||
|
new item_path(loc)
|
||||||
|
|
||||||
|
/hook/roundstart/proc/generate_multi_spawn_items()
|
||||||
|
for(var/id in multi_point_spawns)
|
||||||
|
var/list/spawn_points = multi_point_spawns[id]
|
||||||
|
var/obj/random_multi/rm = pickweight(spawn_points)
|
||||||
|
rm.generate_items()
|
||||||
|
for(var/entry in spawn_points)
|
||||||
|
qdel(entry)
|
||||||
|
return 1
|
||||||
129
code/game/objects/random/guns_and_ammo.dm
Normal file
129
code/game/objects/random/guns_and_ammo.dm
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
/obj/random/energy
|
||||||
|
name = "Random Energy Weapon"
|
||||||
|
desc = "This is a random security weapon."
|
||||||
|
icon = 'icons/obj/gun.dmi'
|
||||||
|
icon_state = "energykill100"
|
||||||
|
|
||||||
|
/obj/random/energy/item_to_spawn()
|
||||||
|
return pick(prob(3);/obj/item/weapon/gun/energy/laser,
|
||||||
|
prob(4);/obj/item/weapon/gun/energy/gun,
|
||||||
|
prob(3);/obj/item/weapon/gun/energy/gun/burst,
|
||||||
|
prob(1);/obj/item/weapon/gun/energy/gun/nuclear,
|
||||||
|
prob(2);/obj/item/weapon/gun/energy/retro,
|
||||||
|
prob(2);/obj/item/weapon/gun/energy/lasercannon,
|
||||||
|
prob(3);/obj/item/weapon/gun/energy/xray,
|
||||||
|
prob(1);/obj/item/weapon/gun/energy/sniperrifle,
|
||||||
|
prob(1);/obj/item/weapon/gun/energy/plasmastun,
|
||||||
|
prob(2);/obj/item/weapon/gun/energy/ionrifle,
|
||||||
|
prob(2);/obj/item/weapon/gun/energy/ionrifle/pistol,
|
||||||
|
prob(3);/obj/item/weapon/gun/energy/toxgun,
|
||||||
|
prob(4);/obj/item/weapon/gun/energy/taser,
|
||||||
|
prob(2);/obj/item/weapon/gun/energy/crossbow/largecrossbow,
|
||||||
|
prob(4);/obj/item/weapon/gun/energy/stunrevolver)
|
||||||
|
|
||||||
|
/obj/random/energy/sec
|
||||||
|
name = "Random Security Energy Weapon"
|
||||||
|
desc = "This is a random security weapon."
|
||||||
|
icon = 'icons/obj/gun.dmi'
|
||||||
|
icon_state = "energykill100"
|
||||||
|
|
||||||
|
/obj/random/energy/sec/item_to_spawn()
|
||||||
|
return pick(prob(2);/obj/item/weapon/gun/energy/laser,
|
||||||
|
prob(2);/obj/item/weapon/gun/energy/gun)
|
||||||
|
|
||||||
|
/obj/random/projectile
|
||||||
|
name = "Random Projectile Weapon"
|
||||||
|
desc = "This is a random projectile weapon."
|
||||||
|
icon = 'icons/obj/gun.dmi'
|
||||||
|
icon_state = "revolver"
|
||||||
|
|
||||||
|
/obj/random/projectile/item_to_spawn()
|
||||||
|
return pick(prob(3);/obj/item/weapon/gun/projectile/automatic/wt550,
|
||||||
|
prob(3);/obj/item/weapon/gun/projectile/automatic/mini_uzi,
|
||||||
|
prob(3);/obj/item/weapon/gun/projectile/automatic/tommygun,
|
||||||
|
prob(2);/obj/item/weapon/gun/projectile/automatic/c20r,
|
||||||
|
prob(2);/obj/item/weapon/gun/projectile/automatic/sts35,
|
||||||
|
prob(2);/obj/item/weapon/gun/projectile/automatic/z8,
|
||||||
|
prob(4);/obj/item/weapon/gun/projectile/colt,
|
||||||
|
prob(2);/obj/item/weapon/gun/projectile/deagle,
|
||||||
|
prob(1);/obj/item/weapon/gun/projectile/deagle/camo,
|
||||||
|
prob(1);/obj/item/weapon/gun/projectile/deagle/gold,
|
||||||
|
prob(3);/obj/item/weapon/gun/projectile/derringer,
|
||||||
|
prob(1);/obj/item/weapon/gun/projectile/heavysniper,
|
||||||
|
prob(4);/obj/item/weapon/gun/projectile/luger,
|
||||||
|
prob(3);/obj/item/weapon/gun/projectile/luger/brown,
|
||||||
|
prob(4);/obj/item/weapon/gun/projectile/sec,
|
||||||
|
prob(3);/obj/item/weapon/gun/projectile/sec/wood,
|
||||||
|
prob(4);/obj/item/weapon/gun/projectile/p92x,
|
||||||
|
prob(3);/obj/item/weapon/gun/projectile/p92x/brown,
|
||||||
|
prob(4);/obj/item/weapon/gun/projectile/pistol,
|
||||||
|
prob(5);/obj/item/weapon/gun/projectile/pirate,
|
||||||
|
prob(2);/obj/item/weapon/gun/projectile/revolver,
|
||||||
|
prob(4);/obj/item/weapon/gun/projectile/revolver/deckard,
|
||||||
|
prob(4);/obj/item/weapon/gun/projectile/revolver/detective,
|
||||||
|
prob(2);/obj/item/weapon/gun/projectile/revolver/judge,
|
||||||
|
prob(3);/obj/item/weapon/gun/projectile/revolver/lemat,
|
||||||
|
prob(2);/obj/item/weapon/gun/projectile/revolver/mateba,
|
||||||
|
prob(4);/obj/item/weapon/gun/projectile/shotgun/doublebarrel,
|
||||||
|
prob(3);/obj/item/weapon/gun/projectile/shotgun/doublebarrel/sawn,
|
||||||
|
prob(3);/obj/item/weapon/gun/projectile/shotgun/pump,
|
||||||
|
prob(2);/obj/item/weapon/gun/projectile/shotgun/pump/combat,
|
||||||
|
prob(4);/obj/item/weapon/gun/projectile/shotgun/pump/rifle,
|
||||||
|
prob(3);/obj/item/weapon/gun/projectile/shotgun/pump/rifle/lever,
|
||||||
|
prob(2);/obj/item/weapon/gun/projectile/silenced)
|
||||||
|
|
||||||
|
/obj/random/projectile/sec
|
||||||
|
name = "Random Security Projectile Weapon"
|
||||||
|
desc = "This is a random security weapon."
|
||||||
|
icon = 'icons/obj/gun.dmi'
|
||||||
|
icon_state = "revolver"
|
||||||
|
|
||||||
|
/obj/random/projectile/sec/item_to_spawn()
|
||||||
|
return pick(prob(3);/obj/item/weapon/gun/projectile/shotgun/pump,
|
||||||
|
prob(2);/obj/item/weapon/gun/projectile/automatic/wt550,
|
||||||
|
prob(1);/obj/item/weapon/gun/projectile/shotgun/pump/combat)
|
||||||
|
|
||||||
|
/obj/random/handgun
|
||||||
|
name = "Random Handgun"
|
||||||
|
desc = "This is a random sidearm."
|
||||||
|
icon = 'icons/obj/gun.dmi'
|
||||||
|
icon_state = "secgundark"
|
||||||
|
|
||||||
|
/obj/random/handgun/item_to_spawn()
|
||||||
|
return pick(prob(4);/obj/item/weapon/gun/projectile/sec,
|
||||||
|
prob(4);/obj/item/weapon/gun/projectile/p92x,
|
||||||
|
prob(3);/obj/item/weapon/gun/projectile/sec/wood,
|
||||||
|
prob(3);/obj/item/weapon/gun/projectile/p92x/brown,
|
||||||
|
prob(3);/obj/item/weapon/gun/projectile/colt,
|
||||||
|
prob(2);/obj/item/weapon/gun/projectile/luger,
|
||||||
|
prob(2);/obj/item/weapon/gun/energy/gun,
|
||||||
|
prob(2);/obj/item/weapon/gun/projectile/pistol,
|
||||||
|
prob(1);/obj/item/weapon/gun/energy/retro,
|
||||||
|
prob(1);/obj/item/weapon/gun/projectile/luger/brown)
|
||||||
|
|
||||||
|
/obj/random/handgun/sec
|
||||||
|
name = "Random Security Handgun"
|
||||||
|
desc = "This is a random security sidearm."
|
||||||
|
icon = 'icons/obj/gun.dmi'
|
||||||
|
icon_state = "secgundark"
|
||||||
|
|
||||||
|
/obj/random/handgun/sec/item_to_spawn()
|
||||||
|
return pick(prob(3);/obj/item/weapon/gun/projectile/sec,
|
||||||
|
prob(1);/obj/item/weapon/gun/projectile/sec/wood)
|
||||||
|
|
||||||
|
/obj/random/ammo
|
||||||
|
name = "Random Ammunition"
|
||||||
|
desc = "This is random security ammunition."
|
||||||
|
icon = 'icons/obj/ammo.dmi'
|
||||||
|
icon_state = "45-10"
|
||||||
|
|
||||||
|
/obj/random/ammo/item_to_spawn()
|
||||||
|
return pick(prob(6);/obj/item/weapon/storage/box/beanbags,
|
||||||
|
prob(2);/obj/item/weapon/storage/box/shotgunammo,
|
||||||
|
prob(4);/obj/item/weapon/storage/box/shotgunshells,
|
||||||
|
prob(1);/obj/item/weapon/storage/box/stunshells,
|
||||||
|
prob(2);/obj/item/ammo_magazine/m45,
|
||||||
|
prob(4);/obj/item/ammo_magazine/m45/rubber,
|
||||||
|
prob(4);/obj/item/ammo_magazine/m45/flash,
|
||||||
|
prob(2);/obj/item/ammo_magazine/m9mmt,
|
||||||
|
prob(6);/obj/item/ammo_magazine/m9mmt/rubber)
|
||||||
314
code/game/objects/random/maintenance.dm
Normal file
314
code/game/objects/random/maintenance.dm
Normal file
@@ -0,0 +1,314 @@
|
|||||||
|
/obj/random/maintenance //Clutter and loot for maintenance and away missions
|
||||||
|
name = "random maintenance item"
|
||||||
|
desc = "This is a random maintenance item."
|
||||||
|
icon = 'icons/obj/items.dmi'
|
||||||
|
icon_state = "gift1"
|
||||||
|
|
||||||
|
/obj/random/maintenance/item_to_spawn()
|
||||||
|
return pick(prob(300);/obj/random/tech_supply,
|
||||||
|
prob(200);/obj/random/medical,
|
||||||
|
prob(100);/obj/random/firstaid,
|
||||||
|
prob(10);/obj/random/contraband,
|
||||||
|
prob(50);/obj/random/action_figure,
|
||||||
|
prob(50);/obj/random/plushie,
|
||||||
|
prob(200);/obj/random/junk,
|
||||||
|
prob(200);/obj/random/material,
|
||||||
|
prob(50);/obj/random/toy,
|
||||||
|
prob(100);/obj/random/tank,
|
||||||
|
prob(50);/obj/random/soap,
|
||||||
|
prob(60);/obj/random/drinkbottle,
|
||||||
|
prob(500);/obj/random/maintenance/clean)
|
||||||
|
|
||||||
|
/obj/random/maintenance/clean
|
||||||
|
/*Maintenance loot lists without the trash, for use inside things.
|
||||||
|
Individual items to add to the maintenance list should go here, if you add
|
||||||
|
something, make sure it's not in one of the other lists.*/
|
||||||
|
name = "random clean maintenance item"
|
||||||
|
desc = "This is a random clean maintenance item."
|
||||||
|
icon = 'icons/obj/items.dmi'
|
||||||
|
icon_state = "gift1"
|
||||||
|
|
||||||
|
/obj/random/maintenance/clean/item_to_spawn()
|
||||||
|
return pick(prob(10);/obj/random/contraband,
|
||||||
|
prob(2);/obj/item/device/flashlight/flare,
|
||||||
|
prob(2);/obj/item/device/flashlight/glowstick,
|
||||||
|
prob(2);/obj/item/device/flashlight/glowstick/blue,
|
||||||
|
prob(1);/obj/item/device/flashlight/glowstick/orange,
|
||||||
|
prob(1);/obj/item/device/flashlight/glowstick/red,
|
||||||
|
prob(1);/obj/item/device/flashlight/glowstick/yellow,
|
||||||
|
prob(1);/obj/item/device/flashlight/pen,
|
||||||
|
prob(4);/obj/item/weapon/cell,
|
||||||
|
prob(4);/obj/item/weapon/cell/device,
|
||||||
|
prob(3);/obj/item/weapon/cell/high,
|
||||||
|
prob(2);/obj/item/weapon/cell/super,
|
||||||
|
prob(5);/obj/random/cigarettes,
|
||||||
|
prob(3);/obj/item/clothing/mask/gas,
|
||||||
|
prob(2);/obj/item/clothing/mask/gas/half,
|
||||||
|
prob(4);/obj/item/clothing/mask/breath,
|
||||||
|
prob(2);/obj/item/weapon/reagent_containers/glass/rag,
|
||||||
|
prob(4);/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
|
||||||
|
prob(2);/obj/item/weapon/storage/secure/briefcase,
|
||||||
|
prob(4);/obj/item/weapon/storage/briefcase,
|
||||||
|
prob(5);/obj/item/weapon/storage/backpack,
|
||||||
|
prob(5);/obj/item/weapon/storage/backpack/satchel/norm,
|
||||||
|
prob(4);/obj/item/weapon/storage/backpack/satchel,
|
||||||
|
prob(3);/obj/item/weapon/storage/backpack/dufflebag,
|
||||||
|
prob(1);/obj/item/weapon/storage/backpack/dufflebag/syndie,
|
||||||
|
prob(5);/obj/item/weapon/storage/box,
|
||||||
|
prob(3);/obj/item/weapon/storage/box/donkpockets,
|
||||||
|
prob(2);/obj/item/weapon/storage/box/sinpockets,
|
||||||
|
prob(1);/obj/item/weapon/storage/box/cups,
|
||||||
|
prob(3);/obj/item/weapon/storage/box/mousetraps,
|
||||||
|
prob(3);/obj/item/weapon/storage/wallet,
|
||||||
|
prob(1);/obj/item/device/paicard,
|
||||||
|
prob(2);/obj/item/clothing/shoes/galoshes,
|
||||||
|
prob(1);/obj/item/clothing/shoes/syndigaloshes,
|
||||||
|
prob(4);/obj/item/clothing/shoes/black,
|
||||||
|
prob(4);/obj/item/clothing/shoes/laceup,
|
||||||
|
prob(4);/obj/item/clothing/shoes/black,
|
||||||
|
prob(4);/obj/item/clothing/shoes/leather,
|
||||||
|
prob(1);/obj/item/clothing/gloves/yellow,
|
||||||
|
prob(3);/obj/item/clothing/gloves/botanic_leather,
|
||||||
|
prob(2);/obj/item/clothing/gloves/sterile/latex,
|
||||||
|
prob(5);/obj/item/clothing/gloves/white,
|
||||||
|
prob(5);/obj/item/clothing/gloves/rainbow,
|
||||||
|
prob(2);/obj/item/clothing/gloves/fyellow,
|
||||||
|
prob(1);/obj/item/clothing/glasses/sunglasses,
|
||||||
|
prob(3);/obj/item/clothing/glasses/meson,
|
||||||
|
prob(2);/obj/item/clothing/glasses/meson/prescription,
|
||||||
|
prob(1);/obj/item/clothing/glasses/welding,
|
||||||
|
prob(1);/obj/item/clothing/head/bio_hood/general,
|
||||||
|
prob(4);/obj/item/clothing/head/hardhat,
|
||||||
|
prob(3);/obj/item/clothing/head/hardhat/red,
|
||||||
|
prob(1);/obj/item/clothing/head/ushanka,
|
||||||
|
prob(2);/obj/item/clothing/head/welding,
|
||||||
|
prob(4);/obj/item/clothing/suit/storage/hazardvest,
|
||||||
|
prob(1);/obj/item/clothing/suit/space/emergency,
|
||||||
|
prob(3);/obj/item/clothing/suit/storage/toggle/bomber,
|
||||||
|
prob(1);/obj/item/clothing/suit/bio_suit/general,
|
||||||
|
prob(3);/obj/item/clothing/suit/storage/toggle/hoodie/black,
|
||||||
|
prob(3);/obj/item/clothing/suit/storage/toggle/hoodie/blue,
|
||||||
|
prob(3);/obj/item/clothing/suit/storage/toggle/hoodie/red,
|
||||||
|
prob(3);/obj/item/clothing/suit/storage/toggle/hoodie/yellow,
|
||||||
|
prob(3);/obj/item/clothing/suit/storage/toggle/brown_jacket,
|
||||||
|
prob(3);/obj/item/clothing/suit/storage/toggle/leather_jacket,
|
||||||
|
prob(1);/obj/item/clothing/suit/storage/vest/press,
|
||||||
|
prob(3);/obj/item/clothing/suit/storage/apron,
|
||||||
|
prob(4);/obj/item/clothing/under/color/grey,
|
||||||
|
prob(2);/obj/item/clothing/under/syndicate/tacticool,
|
||||||
|
prob(2);/obj/item/clothing/under/pants/camo,
|
||||||
|
prob(1);/obj/item/clothing/under/harness,
|
||||||
|
prob(1);/obj/item/clothing/under/tactical,
|
||||||
|
prob(3);/obj/item/clothing/accessory/storage/webbing,
|
||||||
|
prob(4);/obj/item/weapon/spacecash/c1,
|
||||||
|
prob(3);/obj/item/weapon/spacecash/c10,
|
||||||
|
prob(3);/obj/item/weapon/spacecash/c20,
|
||||||
|
prob(1);/obj/item/weapon/spacecash/c50,
|
||||||
|
prob(1);/obj/item/weapon/spacecash/c100,
|
||||||
|
prob(3);/obj/item/weapon/camera_assembly,
|
||||||
|
prob(4);/obj/item/weapon/caution,
|
||||||
|
prob(3);/obj/item/weapon/caution/cone,
|
||||||
|
prob(1);/obj/item/weapon/card/emag_broken,
|
||||||
|
prob(2);/obj/item/device/camera,
|
||||||
|
prob(3);/obj/item/device/pda,
|
||||||
|
prob(3);/obj/item/device/radio/headset)
|
||||||
|
|
||||||
|
/obj/random/maintenance/security
|
||||||
|
/*Maintenance loot list. This one is for around security areas*/
|
||||||
|
name = "random security maintenance item"
|
||||||
|
desc = "This is a random security maintenance item."
|
||||||
|
icon = 'icons/obj/items.dmi'
|
||||||
|
icon_state = "gift1"
|
||||||
|
|
||||||
|
/obj/random/maintenance/security/item_to_spawn()
|
||||||
|
return pick(prob(320);/obj/random/maintenance/clean,
|
||||||
|
prob(2);/obj/item/device/flashlight/maglight,
|
||||||
|
prob(2);/obj/item/device/flash,
|
||||||
|
prob(1);/obj/item/weapon/cell/device/weapon,
|
||||||
|
prob(1);/obj/item/clothing/mask/gas/swat,
|
||||||
|
prob(1);/obj/item/clothing/mask/gas/syndicate,
|
||||||
|
prob(2);/obj/item/clothing/mask/balaclava,
|
||||||
|
prob(1);/obj/item/clothing/mask/balaclava/tactical,
|
||||||
|
prob(3);/obj/item/weapon/storage/backpack/security,
|
||||||
|
prob(3);/obj/item/weapon/storage/backpack/satchel/sec,
|
||||||
|
prob(2);/obj/item/weapon/storage/backpack/messenger/sec,
|
||||||
|
prob(2);/obj/item/weapon/storage/backpack/dufflebag/sec,
|
||||||
|
prob(1);/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo,
|
||||||
|
prob(1);/obj/item/weapon/storage/backpack/dufflebag/syndie/med,
|
||||||
|
prob(2);/obj/item/weapon/storage/box/swabs,
|
||||||
|
prob(2);/obj/item/weapon/storage/belt/security,
|
||||||
|
prob(1);/obj/item/weapon/grenade/flashbang,
|
||||||
|
prob(1);/obj/item/weapon/melee/baton,
|
||||||
|
prob(1);/obj/item/weapon/reagent_containers/spray/pepper,
|
||||||
|
prob(3);/obj/item/clothing/shoes/boots/jackboots,
|
||||||
|
prob(1);/obj/item/clothing/shoes/boots/swat,
|
||||||
|
prob(1);/obj/item/clothing/shoes/boots/combat,
|
||||||
|
prob(1);/obj/item/clothing/gloves/swat,
|
||||||
|
prob(1);/obj/item/clothing/gloves/combat,
|
||||||
|
prob(1);/obj/item/clothing/glasses/sunglasses/big,
|
||||||
|
prob(2);/obj/item/clothing/glasses/hud/security,
|
||||||
|
prob(1);/obj/item/clothing/glasses/sunglasses/sechud,
|
||||||
|
prob(1);/obj/item/clothing/glasses/sunglasses/sechud/aviator,
|
||||||
|
prob(1);/obj/item/clothing/glasses/sunglasses/sechud/tactical,
|
||||||
|
prob(3);/obj/item/clothing/head/beret/sec,
|
||||||
|
prob(3);/obj/item/clothing/head/beret/sec/corporate/officer,
|
||||||
|
prob(3);/obj/item/clothing/head/beret/sec/navy/officer,
|
||||||
|
prob(2);/obj/item/clothing/head/helmet,
|
||||||
|
prob(4);/obj/item/clothing/head/soft/sec,
|
||||||
|
prob(4);/obj/item/clothing/head/soft/sec/corp,
|
||||||
|
prob(3);/obj/item/clothing/suit/armor/vest,
|
||||||
|
prob(2);/obj/item/clothing/suit/armor/vest/security,
|
||||||
|
prob(2);/obj/item/clothing/suit/storage/vest/officer,
|
||||||
|
prob(1);/obj/item/clothing/suit/storage/vest/detective,
|
||||||
|
prob(1);/obj/item/clothing/suit/storage/vest/press,
|
||||||
|
prob(2);/obj/item/clothing/accessory/storage/black_vest,
|
||||||
|
prob(2);/obj/item/clothing/accessory/storage/black_drop_pouches,
|
||||||
|
prob(1);/obj/item/clothing/accessory/holster/leg,
|
||||||
|
prob(1);/obj/item/clothing/accessory/holster/hip,
|
||||||
|
prob(1);/obj/item/clothing/accessory/holster/waist,
|
||||||
|
prob(1);/obj/item/clothing/accessory/holster/armpit,
|
||||||
|
prob(2);/obj/item/clothing/ears/earmuffs,
|
||||||
|
prob(2);/obj/item/weapon/handcuffs,)
|
||||||
|
|
||||||
|
/obj/random/maintenance/medical
|
||||||
|
/*Maintenance loot list. This one is for around medical areas*/
|
||||||
|
name = "random medical maintenance item"
|
||||||
|
desc = "This is a random medical maintenance item."
|
||||||
|
icon = 'icons/obj/items.dmi'
|
||||||
|
icon_state = "gift1"
|
||||||
|
|
||||||
|
/obj/random/maintenance/medical/item_to_spawn()
|
||||||
|
return pick(prob(320);/obj/random/maintenance/clean,
|
||||||
|
prob(25);/obj/random/medical/lite,
|
||||||
|
prob(2);/obj/item/clothing/mask/breath/medical,
|
||||||
|
prob(2);/obj/item/clothing/mask/surgical,
|
||||||
|
prob(5);/obj/item/weapon/storage/backpack/medic,
|
||||||
|
prob(5);/obj/item/weapon/storage/backpack/satchel/med,
|
||||||
|
prob(5);/obj/item/weapon/storage/backpack/messenger/med,
|
||||||
|
prob(3);/obj/item/weapon/storage/backpack/dufflebag/med,
|
||||||
|
prob(1);/obj/item/weapon/storage/backpack/dufflebag/syndie/med,
|
||||||
|
prob(2);/obj/item/weapon/storage/box/autoinjectors,
|
||||||
|
prob(3);/obj/item/weapon/storage/box/beakers,
|
||||||
|
prob(2);/obj/item/weapon/storage/box/bodybags,
|
||||||
|
prob(3);/obj/item/weapon/storage/box/syringes,
|
||||||
|
prob(3);/obj/item/weapon/storage/box/gloves,
|
||||||
|
prob(2);/obj/item/weapon/storage/belt/medical/emt,
|
||||||
|
prob(2);/obj/item/weapon/storage/belt/medical,
|
||||||
|
prob(1);/obj/item/clothing/shoes/boots/combat,
|
||||||
|
prob(3);/obj/item/clothing/shoes/white,
|
||||||
|
prob(2);/obj/item/clothing/gloves/sterile/nitrile,
|
||||||
|
prob(5);/obj/item/clothing/gloves/white,
|
||||||
|
prob(2);/obj/item/clothing/glasses/hud/health,
|
||||||
|
prob(1);/obj/item/clothing/glasses/hud/health/prescription,
|
||||||
|
prob(1);/obj/item/clothing/head/bio_hood/virology,
|
||||||
|
prob(4);/obj/item/clothing/suit/storage/toggle/labcoat,
|
||||||
|
prob(1);/obj/item/clothing/suit/bio_suit/general,
|
||||||
|
prob(2);/obj/item/clothing/under/rank/medical/paramedic,
|
||||||
|
prob(2);/obj/item/clothing/accessory/storage/black_vest,
|
||||||
|
prob(2);/obj/item/clothing/accessory/storage/white_vest,
|
||||||
|
prob(1);/obj/item/clothing/accessory/storage/white_drop_pouches,
|
||||||
|
prob(1);/obj/item/clothing/accessory/storage/black_drop_pouches,
|
||||||
|
prob(2);/obj/item/clothing/accessory/stethoscope)
|
||||||
|
|
||||||
|
/obj/random/maintenance/engineering
|
||||||
|
/*Maintenance loot list. This one is for around medical areas*/
|
||||||
|
name = "random engineering maintenance item"
|
||||||
|
desc = "This is a random engineering maintenance item."
|
||||||
|
icon = 'icons/obj/items.dmi'
|
||||||
|
icon_state = "gift1"
|
||||||
|
|
||||||
|
/obj/random/maintenance/engineering/item_to_spawn()
|
||||||
|
return pick(prob(320);/obj/random/maintenance/clean,
|
||||||
|
prob(2);/obj/item/device/flashlight/maglight,
|
||||||
|
prob(3);/obj/item/clothing/mask/gas/half,
|
||||||
|
prob(2);/obj/item/clothing/mask/balaclava,
|
||||||
|
prob(2);/obj/item/weapon/storage/briefcase/inflatable,
|
||||||
|
prob(5);/obj/item/weapon/storage/backpack/industrial,
|
||||||
|
prob(5);/obj/item/weapon/storage/backpack/satchel/eng,
|
||||||
|
prob(5);/obj/item/weapon/storage/backpack/messenger/engi,
|
||||||
|
prob(3);/obj/item/weapon/storage/backpack/dufflebag/eng,
|
||||||
|
prob(5);/obj/item/weapon/storage/box,
|
||||||
|
prob(2);/obj/item/weapon/storage/belt/utility/full,
|
||||||
|
prob(3);/obj/item/weapon/storage/belt/utility,
|
||||||
|
prob(3);/obj/item/clothing/head/beret/engineering,
|
||||||
|
prob(3);/obj/item/clothing/head/soft/yellow,
|
||||||
|
prob(2);/obj/item/clothing/head/orangebandana,
|
||||||
|
prob(2);/obj/item/clothing/head/hardhat/dblue,
|
||||||
|
prob(2);/obj/item/clothing/head/hardhat/orange,
|
||||||
|
prob(1);/obj/item/clothing/glasses/welding,
|
||||||
|
prob(2);/obj/item/clothing/head/welding,
|
||||||
|
prob(4);/obj/item/clothing/suit/storage/hazardvest,
|
||||||
|
prob(2);/obj/item/clothing/under/overalls,
|
||||||
|
prob(3);/obj/item/clothing/shoes/boots/workboots,
|
||||||
|
prob(1);/obj/item/clothing/shoes/magboots,
|
||||||
|
prob(2);/obj/item/clothing/accessory/storage/black_vest,
|
||||||
|
prob(2);/obj/item/clothing/accessory/storage/brown_vest,
|
||||||
|
prob(1);/obj/item/clothing/accessory/storage/brown_drop_pouches,
|
||||||
|
prob(3);/obj/item/clothing/ears/earmuffs,
|
||||||
|
prob(1);/obj/item/weapon/beartrap,
|
||||||
|
prob(2);/obj/item/weapon/handcuffs)
|
||||||
|
|
||||||
|
/obj/random/maintenance/research
|
||||||
|
/*Maintenance loot list. This one is for around medical areas*/
|
||||||
|
name = "random research maintenance item"
|
||||||
|
desc = "This is a random research maintenance item."
|
||||||
|
icon = 'icons/obj/items.dmi'
|
||||||
|
icon_state = "gift1"
|
||||||
|
|
||||||
|
/obj/random/maintenance/research/item_to_spawn()
|
||||||
|
return pick(prob(320);/obj/random/maintenance/clean,
|
||||||
|
prob(3);/obj/item/device/analyzer/plant_analyzer,
|
||||||
|
prob(1);/obj/item/device/flash/synthetic,
|
||||||
|
prob(2);/obj/item/weapon/bucket_sensor,
|
||||||
|
prob(1);/obj/item/weapon/cell/device/weapon,
|
||||||
|
prob(5);/obj/item/weapon/storage/backpack/toxins,
|
||||||
|
prob(5);/obj/item/weapon/storage/backpack/satchel/tox,
|
||||||
|
prob(5);/obj/item/weapon/storage/backpack/messenger/tox,
|
||||||
|
prob(2);/obj/item/weapon/storage/excavation,
|
||||||
|
prob(1);/obj/item/weapon/storage/backpack/holding,
|
||||||
|
prob(3);/obj/item/weapon/storage/box/beakers,
|
||||||
|
prob(3);/obj/item/weapon/storage/box/syringes,
|
||||||
|
prob(3);/obj/item/weapon/storage/box/gloves,
|
||||||
|
prob(2);/obj/item/clothing/gloves/sterile/latex,
|
||||||
|
prob(4);/obj/item/clothing/glasses/science,
|
||||||
|
prob(3);/obj/item/clothing/glasses/material,
|
||||||
|
prob(1);/obj/item/clothing/head/beret/purple,
|
||||||
|
prob(1);/obj/item/clothing/head/bio_hood/scientist,
|
||||||
|
prob(4);/obj/item/clothing/suit/storage/toggle/labcoat,
|
||||||
|
prob(4);/obj/item/clothing/suit/storage/toggle/labcoat/science,
|
||||||
|
prob(1);/obj/item/clothing/suit/bio_suit/scientist,
|
||||||
|
prob(4);/obj/item/clothing/under/rank/scientist,
|
||||||
|
prob(2);/obj/item/clothing/under/rank/scientist_new)
|
||||||
|
|
||||||
|
/obj/random/maintenance/cargo
|
||||||
|
/*Maintenance loot list. This one is for around cargo areas*/
|
||||||
|
name = "random cargo maintenance item"
|
||||||
|
desc = "This is a random cargo maintenance item."
|
||||||
|
icon = 'icons/obj/items.dmi'
|
||||||
|
icon_state = "gift1"
|
||||||
|
|
||||||
|
/obj/random/maintenance/cargo/item_to_spawn()
|
||||||
|
return pick(prob(320);/obj/random/maintenance/clean,
|
||||||
|
prob(3);/obj/item/device/flashlight/lantern,
|
||||||
|
prob(4);/obj/item/weapon/pickaxe,
|
||||||
|
prob(5);/obj/item/weapon/storage/backpack/industrial,
|
||||||
|
prob(5);/obj/item/weapon/storage/backpack/satchel/norm,
|
||||||
|
prob(3);/obj/item/weapon/storage/backpack/dufflebag,
|
||||||
|
prob(1);/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo,
|
||||||
|
prob(1);/obj/item/weapon/storage/toolbox/syndicate,
|
||||||
|
prob(1);/obj/item/weapon/storage/belt/utility/full,
|
||||||
|
prob(2);/obj/item/weapon/storage/belt/utility,
|
||||||
|
prob(4);/obj/item/device/toner,
|
||||||
|
prob(1);/obj/item/device/destTagger,
|
||||||
|
prob(3);/obj/item/clothing/glasses/material,
|
||||||
|
prob(3);/obj/item/clothing/head/soft/yellow,
|
||||||
|
prob(4);/obj/item/clothing/suit/storage/hazardvest,
|
||||||
|
prob(3);/obj/item/clothing/suit/storage/apron/overalls,
|
||||||
|
prob(4);/obj/item/clothing/suit/storage/apron,
|
||||||
|
prob(2);/obj/item/clothing/under/syndicate/tacticool,
|
||||||
|
prob(1);/obj/item/clothing/under/syndicate/combat,
|
||||||
|
prob(2);/obj/item/clothing/accessory/storage/black_vest,
|
||||||
|
prob(2);/obj/item/clothing/accessory/storage/brown_vest,
|
||||||
|
prob(3);/obj/item/clothing/ears/earmuffs,
|
||||||
|
prob(1);/obj/item/weapon/beartrap,
|
||||||
|
prob(2);/obj/item/weapon/handcuffs,)
|
||||||
395
code/game/objects/random/mapping.dm
Normal file
395
code/game/objects/random/mapping.dm
Normal file
@@ -0,0 +1,395 @@
|
|||||||
|
/*
|
||||||
|
// Least descriptive filename?
|
||||||
|
// This is where all of the things that aren't really loot should go.
|
||||||
|
// Barricades, mines, etc.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/obj/random/junk //Broken items, or stuff that could be picked up
|
||||||
|
name = "random junk"
|
||||||
|
desc = "This is some random junk."
|
||||||
|
icon = 'icons/obj/trash.dmi'
|
||||||
|
icon_state = "trashbag3"
|
||||||
|
|
||||||
|
/obj/random/junk/item_to_spawn()
|
||||||
|
return get_random_junk_type()
|
||||||
|
|
||||||
|
/obj/random/trash //Mostly remains and cleanable decals. Stuff a janitor could clean up
|
||||||
|
name = "random trash"
|
||||||
|
desc = "This is some random trash."
|
||||||
|
icon = 'icons/effects/effects.dmi'
|
||||||
|
icon_state = "greenglow"
|
||||||
|
|
||||||
|
/obj/random/trash/item_to_spawn()
|
||||||
|
return pick(/obj/effect/decal/remains/lizard,
|
||||||
|
/obj/effect/decal/cleanable/blood/gibs/robot,
|
||||||
|
/obj/effect/decal/cleanable/blood/oil,
|
||||||
|
/obj/effect/decal/cleanable/blood/oil/streak,
|
||||||
|
/obj/effect/decal/cleanable/spiderling_remains,
|
||||||
|
/obj/effect/decal/remains/mouse,
|
||||||
|
/obj/effect/decal/cleanable/vomit,
|
||||||
|
/obj/effect/decal/cleanable/blood/splatter,
|
||||||
|
/obj/effect/decal/cleanable/ash,
|
||||||
|
/obj/effect/decal/cleanable/generic,
|
||||||
|
/obj/effect/decal/cleanable/flour,
|
||||||
|
/obj/effect/decal/cleanable/dirt,
|
||||||
|
/obj/effect/decal/remains/robot)
|
||||||
|
|
||||||
|
/obj/random/obstruction //Large objects to block things off in maintenance
|
||||||
|
name = "random obstruction"
|
||||||
|
desc = "This is a random obstruction."
|
||||||
|
icon = 'icons/obj/cult.dmi'
|
||||||
|
icon_state = "cultgirder"
|
||||||
|
|
||||||
|
/obj/random/obstruction/item_to_spawn()
|
||||||
|
return pick(/obj/structure/barricade,
|
||||||
|
/obj/structure/girder,
|
||||||
|
/obj/structure/girder/displaced,
|
||||||
|
/obj/structure/girder/reinforced,
|
||||||
|
/obj/structure/grille,
|
||||||
|
/obj/structure/grille/broken,
|
||||||
|
/obj/structure/foamedmetal,
|
||||||
|
/obj/structure/inflatable,
|
||||||
|
/obj/structure/inflatable/door)
|
||||||
|
|
||||||
|
/obj/random/landmine
|
||||||
|
name = "Random Land Mine"
|
||||||
|
desc = "This is a random land mine."
|
||||||
|
icon = 'icons/obj/weapons.dmi'
|
||||||
|
icon_state = "uglymine"
|
||||||
|
spawn_nothing_percentage = 25
|
||||||
|
|
||||||
|
/obj/random/landmine/item_to_spawn()
|
||||||
|
return pick(prob(30);/obj/effect/mine,
|
||||||
|
prob(25);/obj/effect/mine/frag,
|
||||||
|
prob(25);/obj/effect/mine/emp,
|
||||||
|
prob(10);/obj/effect/mine/stun,
|
||||||
|
prob(10);/obj/effect/mine/incendiary,)
|
||||||
|
|
||||||
|
/obj/random_multi/single_item/captains_spare_id
|
||||||
|
name = "Multi Point - Captain's Spare"
|
||||||
|
id = "Captain's spare id"
|
||||||
|
item_path = /obj/item/weapon/card/id/gold/captain/spare
|
||||||
|
|
||||||
|
/obj/random_multi/single_item/sfr_headset
|
||||||
|
name = "Multi Point - headset"
|
||||||
|
id = "SFR headset"
|
||||||
|
item_path = /obj/random/sfr
|
||||||
|
|
||||||
|
// This is in here because it's spawned by the SFR Headset randomizer
|
||||||
|
/obj/random/sfr
|
||||||
|
name = "random SFR headset"
|
||||||
|
desc = "This is a headset spawn."
|
||||||
|
icon = 'icons/misc/mark.dmi'
|
||||||
|
icon_state = "rup"
|
||||||
|
|
||||||
|
/obj/random/sfr/item_to_spawn()
|
||||||
|
return pick(prob(25);/obj/item/device/radio/headset/heads/captain/sfr,
|
||||||
|
prob(25);/obj/item/device/radio/headset/headset_cargo/alt,
|
||||||
|
prob(25);/obj/item/device/radio/headset/headset_com/alt,
|
||||||
|
prob(25);/obj/item/device/radio/headset)
|
||||||
|
|
||||||
|
// Mining Goodies
|
||||||
|
/obj/random/multiple/minevault
|
||||||
|
name = "random vault loot"
|
||||||
|
desc = "Loot for mine vaults."
|
||||||
|
icon = 'icons/misc/mark.dmi'
|
||||||
|
icon_state = "rup"
|
||||||
|
|
||||||
|
/obj/random/multiple/minevault/item_to_spawn()
|
||||||
|
return pick(
|
||||||
|
prob(5);list(
|
||||||
|
/obj/item/clothing/mask/smokable/pipe,
|
||||||
|
/obj/item/weapon/reagent_containers/food/drinks/bottle/rum,
|
||||||
|
/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey,
|
||||||
|
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus,
|
||||||
|
/obj/item/weapon/flame/lighter/zippo,
|
||||||
|
/obj/structure/closet/crate/hydroponics
|
||||||
|
),
|
||||||
|
prob(5);list(
|
||||||
|
/obj/item/weapon/pickaxe/drill,
|
||||||
|
/obj/item/clothing/suit/space/void/mining,
|
||||||
|
/obj/item/clothing/head/helmet/space/void/mining,
|
||||||
|
/obj/structure/closet/crate/engineering
|
||||||
|
),
|
||||||
|
prob(5);list(
|
||||||
|
/obj/item/weapon/pickaxe/drill,
|
||||||
|
/obj/item/clothing/suit/space/void/mining/alt,
|
||||||
|
/obj/item/clothing/head/helmet/space/void/mining/alt,
|
||||||
|
/obj/structure/closet/crate/engineering
|
||||||
|
),
|
||||||
|
prob(5);list(
|
||||||
|
/obj/item/weapon/reagent_containers/glass/beaker/bluespace,
|
||||||
|
/obj/item/weapon/reagent_containers/glass/beaker/bluespace,
|
||||||
|
/obj/item/weapon/reagent_containers/glass/beaker/bluespace,
|
||||||
|
/obj/structure/closet/crate/science
|
||||||
|
),
|
||||||
|
prob(5);list(
|
||||||
|
/obj/item/weapon/ore/diamond,
|
||||||
|
/obj/item/weapon/ore/diamond,
|
||||||
|
/obj/item/weapon/ore/diamond,
|
||||||
|
/obj/item/weapon/ore/diamond,
|
||||||
|
/obj/item/weapon/ore/diamond,
|
||||||
|
/obj/item/weapon/ore/diamond,
|
||||||
|
/obj/item/weapon/ore/diamond,
|
||||||
|
/obj/item/weapon/ore/diamond,
|
||||||
|
/obj/item/weapon/ore/diamond,
|
||||||
|
/obj/item/weapon/ore/diamond,
|
||||||
|
/obj/item/weapon/ore/gold,
|
||||||
|
/obj/item/weapon/ore/gold,
|
||||||
|
/obj/item/weapon/ore/gold,
|
||||||
|
/obj/item/weapon/ore/gold,
|
||||||
|
/obj/item/weapon/ore/gold,
|
||||||
|
/obj/item/weapon/ore/gold,
|
||||||
|
/obj/item/weapon/ore/gold,
|
||||||
|
/obj/item/weapon/ore/gold,
|
||||||
|
/obj/item/weapon/ore/gold,
|
||||||
|
/obj/item/weapon/ore/gold,
|
||||||
|
/obj/structure/closet/crate/engineering
|
||||||
|
),
|
||||||
|
prob(5);list(
|
||||||
|
/obj/item/weapon/pickaxe/drill,
|
||||||
|
/obj/item/clothing/glasses/material,
|
||||||
|
/obj/structure/ore_box,
|
||||||
|
/obj/structure/closet/crate
|
||||||
|
),
|
||||||
|
prob(5);list(
|
||||||
|
/obj/item/weapon/reagent_containers/glass/beaker/noreact,
|
||||||
|
/obj/item/weapon/reagent_containers/glass/beaker/noreact,
|
||||||
|
/obj/item/weapon/reagent_containers/glass/beaker/noreact,
|
||||||
|
/obj/structure/closet/crate/science
|
||||||
|
),
|
||||||
|
prob(5);list(
|
||||||
|
/obj/item/weapon/storage/secure/briefcase/money,
|
||||||
|
/obj/structure/closet/crate/freezer/rations
|
||||||
|
),
|
||||||
|
prob(5);list(
|
||||||
|
/obj/item/clothing/accessory/tie/horrible,
|
||||||
|
/obj/item/clothing/accessory/tie/horrible,
|
||||||
|
/obj/item/clothing/accessory/tie/horrible,
|
||||||
|
/obj/item/clothing/accessory/tie/horrible,
|
||||||
|
/obj/item/clothing/accessory/tie/horrible,
|
||||||
|
/obj/item/clothing/accessory/tie/horrible,
|
||||||
|
/obj/structure/closet/crate
|
||||||
|
),
|
||||||
|
prob(5);list(
|
||||||
|
/obj/item/weapon/melee/baton,
|
||||||
|
/obj/item/weapon/melee/baton,
|
||||||
|
/obj/item/weapon/melee/baton,
|
||||||
|
/obj/item/weapon/melee/baton,
|
||||||
|
/obj/structure/closet/crate
|
||||||
|
),
|
||||||
|
prob(5);list(
|
||||||
|
/obj/item/clothing/under/shorts/red,
|
||||||
|
/obj/item/clothing/under/shorts/blue,
|
||||||
|
/obj/structure/closet/crate
|
||||||
|
),
|
||||||
|
prob(2);list(
|
||||||
|
/obj/item/weapon/melee/baton/cattleprod,
|
||||||
|
/obj/item/weapon/melee/baton/cattleprod,
|
||||||
|
/obj/item/weapon/cell/high,
|
||||||
|
/obj/item/weapon/cell/high,
|
||||||
|
/obj/structure/closet/crate
|
||||||
|
),
|
||||||
|
prob(2);list(
|
||||||
|
/obj/item/latexballon,
|
||||||
|
/obj/item/latexballon,
|
||||||
|
/obj/structure/closet/crate
|
||||||
|
),
|
||||||
|
prob(2);list(
|
||||||
|
/obj/item/toy/syndicateballoon,
|
||||||
|
/obj/item/toy/syndicateballoon,
|
||||||
|
/obj/structure/closet/crate
|
||||||
|
),
|
||||||
|
prob(2);list(
|
||||||
|
/obj/item/weapon/rig/industrial/equipped,
|
||||||
|
/obj/item/weapon/storage/bag/ore,
|
||||||
|
/obj/structure/closet/crate/engineering
|
||||||
|
),
|
||||||
|
prob(2);list(
|
||||||
|
/obj/item/clothing/head/kitty,
|
||||||
|
/obj/item/clothing/head/kitty,
|
||||||
|
/obj/item/clothing/head/kitty,
|
||||||
|
/obj/item/clothing/head/kitty,
|
||||||
|
/obj/structure/closet/crate
|
||||||
|
),
|
||||||
|
prob(2);list(
|
||||||
|
/obj/random/coin,
|
||||||
|
/obj/random/coin,
|
||||||
|
/obj/random/coin,
|
||||||
|
/obj/random/coin,
|
||||||
|
/obj/random/coin,
|
||||||
|
/obj/structure/closet/crate/plastic
|
||||||
|
),
|
||||||
|
prob(2);list(
|
||||||
|
/obj/random/multiple/voidsuit,
|
||||||
|
/obj/random/multiple/voidsuit,
|
||||||
|
/obj/structure/closet/crate/engineering
|
||||||
|
),
|
||||||
|
prob(2);list(
|
||||||
|
/obj/item/clothing/suit/space/syndicate/black/red,
|
||||||
|
/obj/item/clothing/head/helmet/space/syndicate/black/red,
|
||||||
|
/obj/item/clothing/suit/space/syndicate/black/red,
|
||||||
|
/obj/item/clothing/head/helmet/space/syndicate/black/red,
|
||||||
|
/obj/item/weapon/gun/projectile/automatic/mini_uzi,
|
||||||
|
/obj/item/weapon/gun/projectile/automatic/mini_uzi,
|
||||||
|
/obj/item/ammo_magazine/m45uzi,
|
||||||
|
/obj/item/ammo_magazine/m45uzi,
|
||||||
|
/obj/item/ammo_magazine/m45uzi/empty,
|
||||||
|
/obj/item/ammo_magazine/m45uzi/empty,
|
||||||
|
/obj/structure/closet/crate/plastic
|
||||||
|
),
|
||||||
|
prob(2);list(
|
||||||
|
/obj/item/clothing/suit/ianshirt,
|
||||||
|
/obj/item/clothing/suit/ianshirt,
|
||||||
|
/obj/item/weapon/bedsheet/ian,
|
||||||
|
/obj/structure/closet/crate/plastic
|
||||||
|
),
|
||||||
|
prob(2);list(
|
||||||
|
/obj/item/clothing/suit/armor/vest,
|
||||||
|
/obj/item/clothing/suit/armor/vest,
|
||||||
|
/obj/item/weapon/gun/projectile/garand,
|
||||||
|
/obj/item/weapon/gun/projectile/garand,
|
||||||
|
/obj/item/ammo_magazine/m762garand,
|
||||||
|
/obj/item/ammo_magazine/m762garand,
|
||||||
|
/obj/structure/closet/crate/plastic
|
||||||
|
),
|
||||||
|
prob(2);list(
|
||||||
|
/obj/mecha/working/ripley/mining
|
||||||
|
),
|
||||||
|
prob(2);list(
|
||||||
|
/obj/mecha/working/hoverpod/combatpod
|
||||||
|
),
|
||||||
|
prob(2);list(
|
||||||
|
/obj/item/weapon/pickaxe/silver,
|
||||||
|
/obj/item/weapon/storage/bag/ore,
|
||||||
|
/obj/item/clothing/glasses/material,
|
||||||
|
/obj/structure/closet/crate/engineering
|
||||||
|
),
|
||||||
|
prob(2);list(
|
||||||
|
/obj/item/weapon/pickaxe/drill,
|
||||||
|
/obj/item/weapon/storage/bag/ore,
|
||||||
|
/obj/item/clothing/glasses/material,
|
||||||
|
/obj/structure/closet/crate/engineering
|
||||||
|
),
|
||||||
|
prob(2);list(
|
||||||
|
/obj/item/weapon/pickaxe/jackhammer,
|
||||||
|
/obj/item/weapon/storage/bag/ore,
|
||||||
|
/obj/item/clothing/glasses/material,
|
||||||
|
/obj/structure/closet/crate/engineering
|
||||||
|
),
|
||||||
|
prob(2);list(
|
||||||
|
/obj/item/weapon/pickaxe/diamond,
|
||||||
|
/obj/item/weapon/storage/bag/ore,
|
||||||
|
/obj/item/clothing/glasses/material,
|
||||||
|
/obj/structure/closet/crate/engineering
|
||||||
|
),
|
||||||
|
prob(2);list(
|
||||||
|
/obj/item/weapon/pickaxe/diamonddrill,
|
||||||
|
/obj/item/weapon/storage/bag/ore,
|
||||||
|
/obj/item/clothing/glasses/material,
|
||||||
|
/obj/structure/closet/crate/engineering
|
||||||
|
),
|
||||||
|
prob(2);list(
|
||||||
|
/obj/item/weapon/pickaxe/gold,
|
||||||
|
/obj/item/weapon/storage/bag/ore,
|
||||||
|
/obj/item/clothing/glasses/material,
|
||||||
|
/obj/structure/closet/crate/engineering
|
||||||
|
),
|
||||||
|
prob(2);list(
|
||||||
|
/obj/item/weapon/pickaxe/plasmacutter,
|
||||||
|
/obj/item/weapon/storage/bag/ore,
|
||||||
|
/obj/item/clothing/glasses/material,
|
||||||
|
/obj/structure/closet/crate/engineering
|
||||||
|
),
|
||||||
|
prob(2);list(
|
||||||
|
/obj/item/weapon/material/sword/katana,
|
||||||
|
/obj/item/weapon/material/sword/katana,
|
||||||
|
/obj/structure/closet/crate
|
||||||
|
),
|
||||||
|
prob(2);list(
|
||||||
|
/obj/item/weapon/material/sword,
|
||||||
|
/obj/item/weapon/material/sword,
|
||||||
|
/obj/structure/closet/crate
|
||||||
|
),
|
||||||
|
prob(1);list(
|
||||||
|
/obj/item/clothing/mask/balaclava,
|
||||||
|
/obj/item/weapon/material/star,
|
||||||
|
/obj/item/weapon/material/star,
|
||||||
|
/obj/item/weapon/material/star,
|
||||||
|
/obj/item/weapon/material/star,
|
||||||
|
/obj/structure/closet/crate
|
||||||
|
),
|
||||||
|
prob(1);list(
|
||||||
|
/obj/item/weed_extract,
|
||||||
|
/obj/item/xenos_claw,
|
||||||
|
/obj/structure/closet/crate/science
|
||||||
|
),
|
||||||
|
prob(1);list(
|
||||||
|
/obj/item/clothing/head/bearpelt,
|
||||||
|
/obj/item/clothing/under/soviet,
|
||||||
|
/obj/item/clothing/under/soviet,
|
||||||
|
/obj/item/weapon/gun/projectile/shotgun/pump/rifle/ceremonial,
|
||||||
|
/obj/item/weapon/gun/projectile/shotgun/pump/rifle/ceremonial,
|
||||||
|
/obj/structure/closet/crate
|
||||||
|
),
|
||||||
|
prob(1);list(
|
||||||
|
/obj/item/weapon/gun/projectile/revolver/detective,
|
||||||
|
/obj/item/weapon/gun/projectile/contender,
|
||||||
|
/obj/item/weapon/gun/projectile/p92x,
|
||||||
|
/obj/item/weapon/gun/projectile/derringer,
|
||||||
|
/obj/structure/closet/crate
|
||||||
|
),
|
||||||
|
prob(1);list(
|
||||||
|
/obj/item/weapon/melee/cultblade,
|
||||||
|
/obj/item/clothing/suit/cultrobes,
|
||||||
|
/obj/item/clothing/head/culthood,
|
||||||
|
/obj/item/device/soulstone,
|
||||||
|
/obj/structure/closet/crate
|
||||||
|
),
|
||||||
|
prob(1);list(
|
||||||
|
/obj/item/weapon/vampiric,
|
||||||
|
/obj/item/weapon/vampiric,
|
||||||
|
/obj/structure/closet/crate/science
|
||||||
|
),
|
||||||
|
prob(1);list(
|
||||||
|
/obj/item/weapon/archaeological_find
|
||||||
|
),
|
||||||
|
prob(1);list(
|
||||||
|
/obj/item/weapon/melee/energy/sword,
|
||||||
|
/obj/item/weapon/melee/energy/sword,
|
||||||
|
/obj/item/weapon/melee/energy/sword,
|
||||||
|
/obj/item/weapon/shield/energy,
|
||||||
|
/obj/item/weapon/shield/energy,
|
||||||
|
/obj/structure/closet/crate/science
|
||||||
|
),
|
||||||
|
prob(1);list(
|
||||||
|
/obj/item/weapon/storage/backpack/clown,
|
||||||
|
/obj/item/clothing/under/rank/clown,
|
||||||
|
/obj/item/clothing/shoes/clown_shoes,
|
||||||
|
/obj/item/device/pda/clown,
|
||||||
|
/obj/item/clothing/mask/gas/clown_hat,
|
||||||
|
/obj/item/weapon/bikehorn,
|
||||||
|
/obj/item/toy/waterflower,
|
||||||
|
/obj/item/weapon/pen/crayon/rainbow,
|
||||||
|
/obj/structure/closet/crate
|
||||||
|
),
|
||||||
|
prob(1);list(
|
||||||
|
/obj/item/clothing/under/mime,
|
||||||
|
/obj/item/clothing/shoes/black,
|
||||||
|
/obj/item/device/pda/mime,
|
||||||
|
/obj/item/clothing/gloves/white,
|
||||||
|
/obj/item/clothing/mask/gas/mime,
|
||||||
|
/obj/item/clothing/head/beret,
|
||||||
|
/obj/item/clothing/suit/suspenders,
|
||||||
|
/obj/item/weapon/pen/crayon/mime,
|
||||||
|
/obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing,
|
||||||
|
/obj/structure/closet/crate
|
||||||
|
),
|
||||||
|
prob(1);list(
|
||||||
|
/obj/item/weapon/storage/belt/champion,
|
||||||
|
/obj/item/clothing/mask/luchador,
|
||||||
|
/obj/item/clothing/mask/luchador/rudos,
|
||||||
|
/obj/item/clothing/mask/luchador/tecnicos,
|
||||||
|
/obj/structure/closet/crate
|
||||||
|
)
|
||||||
|
)
|
||||||
431
code/game/objects/random/misc.dm
Normal file
431
code/game/objects/random/misc.dm
Normal file
@@ -0,0 +1,431 @@
|
|||||||
|
/*
|
||||||
|
// This is going to get so incredibly bloated.
|
||||||
|
// But this is where all of the "Loot" goes. Anything fun or useful that doesn't deserve its own file, pile in.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/obj/random/tool
|
||||||
|
name = "random tool"
|
||||||
|
desc = "This is a random tool"
|
||||||
|
icon = 'icons/obj/tools.dmi'
|
||||||
|
icon_state = "welder"
|
||||||
|
|
||||||
|
/obj/random/tool/item_to_spawn()
|
||||||
|
return pick(/obj/item/weapon/screwdriver,
|
||||||
|
/obj/item/weapon/wirecutters,
|
||||||
|
/obj/item/weapon/weldingtool,
|
||||||
|
/obj/item/weapon/weldingtool/largetank,
|
||||||
|
/obj/item/weapon/crowbar,
|
||||||
|
/obj/item/weapon/wrench,
|
||||||
|
/obj/item/device/flashlight,
|
||||||
|
/obj/item/device/multitool)
|
||||||
|
|
||||||
|
/obj/random/tool/power
|
||||||
|
name = "random powertool"
|
||||||
|
desc = "This is a random powertool"
|
||||||
|
icon_state = "jaws_pry"
|
||||||
|
|
||||||
|
/obj/random/tool/power/item_to_spawn()
|
||||||
|
return pick(/obj/item/weapon/screwdriver/power,
|
||||||
|
/obj/item/weapon/wirecutters/power,
|
||||||
|
/obj/item/weapon/weldingtool/electric,
|
||||||
|
/obj/item/weapon/weldingtool/experimental)
|
||||||
|
|
||||||
|
/obj/random/tool/alien
|
||||||
|
name = "random alien tool"
|
||||||
|
desc = "This is a random tool"
|
||||||
|
icon = 'icons/obj/abductor.dmi'
|
||||||
|
icon_state = "welder"
|
||||||
|
|
||||||
|
/obj/random/tool/alien/item_to_spawn()
|
||||||
|
return pick(/obj/item/weapon/screwdriver/alien,
|
||||||
|
/obj/item/weapon/wirecutters/alien,
|
||||||
|
/obj/item/weapon/weldingtool/alien,
|
||||||
|
/obj/item/weapon/crowbar/alien,
|
||||||
|
/obj/item/weapon/wrench/alien,
|
||||||
|
/obj/item/stack/cable_coil/alien,
|
||||||
|
/obj/item/device/multitool/alien)
|
||||||
|
|
||||||
|
/obj/random/technology_scanner
|
||||||
|
name = "random scanner"
|
||||||
|
desc = "This is a random technology scanner."
|
||||||
|
icon = 'icons/obj/device.dmi'
|
||||||
|
icon_state = "atmos"
|
||||||
|
|
||||||
|
/obj/random/technology_scanner/item_to_spawn()
|
||||||
|
return pick(prob(5);/obj/item/device/t_scanner,
|
||||||
|
prob(2);/obj/item/device/radio,
|
||||||
|
prob(5);/obj/item/device/analyzer)
|
||||||
|
|
||||||
|
/obj/random/powercell
|
||||||
|
name = "random powercell"
|
||||||
|
desc = "This is a random powercell."
|
||||||
|
icon = 'icons/obj/power.dmi'
|
||||||
|
icon_state = "cell"
|
||||||
|
|
||||||
|
/obj/random/powercell/item_to_spawn()
|
||||||
|
return pick(prob(40);/obj/item/weapon/cell,
|
||||||
|
prob(25);/obj/item/weapon/cell/device,
|
||||||
|
prob(25);/obj/item/weapon/cell/high,
|
||||||
|
prob(9);/obj/item/weapon/cell/super,
|
||||||
|
prob(1);/obj/item/weapon/cell/hyper)
|
||||||
|
|
||||||
|
|
||||||
|
/obj/random/bomb_supply
|
||||||
|
name = "bomb supply"
|
||||||
|
desc = "This is a random bomb supply."
|
||||||
|
icon = 'icons/obj/assemblies/new_assemblies.dmi'
|
||||||
|
icon_state = "signaller"
|
||||||
|
|
||||||
|
/obj/random/bomb_supply/item_to_spawn()
|
||||||
|
return pick(/obj/item/device/assembly/igniter,
|
||||||
|
/obj/item/device/assembly/prox_sensor,
|
||||||
|
/obj/item/device/assembly/signaler,
|
||||||
|
/obj/item/device/assembly/timer,
|
||||||
|
/obj/item/device/multitool)
|
||||||
|
|
||||||
|
|
||||||
|
/obj/random/toolbox
|
||||||
|
name = "random toolbox"
|
||||||
|
desc = "This is a random toolbox."
|
||||||
|
icon = 'icons/obj/storage.dmi'
|
||||||
|
icon_state = "red"
|
||||||
|
|
||||||
|
/obj/random/toolbox/item_to_spawn()
|
||||||
|
return pick(prob(6);/obj/item/weapon/storage/toolbox/mechanical,
|
||||||
|
prob(6);/obj/item/weapon/storage/toolbox/electrical,
|
||||||
|
prob(2);/obj/item/weapon/storage/toolbox/emergency,
|
||||||
|
prob(1);/obj/item/weapon/storage/toolbox/syndicate)
|
||||||
|
|
||||||
|
|
||||||
|
/obj/random/tech_supply
|
||||||
|
name = "random tech supply"
|
||||||
|
desc = "This is a random piece of technology supplies."
|
||||||
|
icon = 'icons/obj/power.dmi'
|
||||||
|
icon_state = "cell"
|
||||||
|
spawn_nothing_percentage = 25
|
||||||
|
|
||||||
|
/obj/random/tech_supply/item_to_spawn()
|
||||||
|
return pick(prob(3);/obj/random/powercell,
|
||||||
|
prob(2);/obj/random/technology_scanner,
|
||||||
|
prob(1);/obj/item/weapon/packageWrap,
|
||||||
|
prob(2);/obj/random/bomb_supply,
|
||||||
|
prob(1);/obj/item/weapon/extinguisher,
|
||||||
|
prob(1);/obj/item/clothing/gloves/fyellow,
|
||||||
|
prob(3);/obj/item/stack/cable_coil/random,
|
||||||
|
prob(2);/obj/random/toolbox,
|
||||||
|
prob(2);/obj/item/weapon/storage/belt/utility,
|
||||||
|
prob(1);/obj/item/weapon/storage/belt/utility/full,
|
||||||
|
prob(5);/obj/random/tool,
|
||||||
|
prob(2);/obj/item/weapon/tape_roll,
|
||||||
|
prob(2);/obj/item/taperoll/engineering,
|
||||||
|
prob(1);/obj/item/taperoll/atmos,
|
||||||
|
prob(1);/obj/item/device/flashlight/maglight)
|
||||||
|
|
||||||
|
/obj/random/tech_supply/component
|
||||||
|
name = "random tech component"
|
||||||
|
desc = "This is a random machine component."
|
||||||
|
icon = 'icons/obj/items.dmi'
|
||||||
|
icon_state = "portable_analyzer"
|
||||||
|
|
||||||
|
/obj/random/tech_supply/component/item_to_spawn()
|
||||||
|
return pick(prob(3);/obj/item/weapon/stock_parts/gear,
|
||||||
|
prob(2);/obj/item/weapon/stock_parts/console_screen,
|
||||||
|
prob(1);/obj/item/weapon/stock_parts/spring,
|
||||||
|
prob(3);/obj/item/weapon/stock_parts/capacitor,
|
||||||
|
prob(2);/obj/item/weapon/stock_parts/capacitor/adv,
|
||||||
|
prob(1);/obj/item/weapon/stock_parts/capacitor/super,
|
||||||
|
prob(3);/obj/item/weapon/stock_parts/manipulator,
|
||||||
|
prob(2);/obj/item/weapon/stock_parts/manipulator/nano,
|
||||||
|
prob(1);/obj/item/weapon/stock_parts/manipulator/pico,
|
||||||
|
prob(3);/obj/item/weapon/stock_parts/matter_bin,
|
||||||
|
prob(2);/obj/item/weapon/stock_parts/matter_bin/adv,
|
||||||
|
prob(1);/obj/item/weapon/stock_parts/matter_bin/super,
|
||||||
|
prob(3);/obj/item/weapon/stock_parts/scanning_module,
|
||||||
|
prob(2);/obj/item/weapon/stock_parts/scanning_module/adv,
|
||||||
|
prob(1);/obj/item/weapon/stock_parts/scanning_module/phasic)
|
||||||
|
|
||||||
|
/obj/random/medical
|
||||||
|
name = "Random Medicine"
|
||||||
|
desc = "This is a random medical item."
|
||||||
|
icon = 'icons/obj/items.dmi'
|
||||||
|
icon_state = "traumakit"
|
||||||
|
|
||||||
|
/obj/random/medical/item_to_spawn()
|
||||||
|
return pick(prob(21);/obj/random/medical/lite,
|
||||||
|
prob(5);/obj/random/medical/pillbottle,
|
||||||
|
prob(1);/obj/item/weapon/storage/pill_bottle/tramadol,
|
||||||
|
prob(1);/obj/item/weapon/storage/pill_bottle/antitox,
|
||||||
|
prob(1);/obj/item/weapon/storage/pill_bottle/carbon,
|
||||||
|
prob(3);/obj/item/bodybag/cryobag,
|
||||||
|
prob(5);/obj/item/weapon/reagent_containers/syringe/antitoxin,
|
||||||
|
prob(3);/obj/item/weapon/reagent_containers/syringe/antiviral,
|
||||||
|
prob(5);/obj/item/weapon/reagent_containers/syringe/inaprovaline,
|
||||||
|
prob(1);/obj/item/weapon/reagent_containers/hypospray,
|
||||||
|
prob(1);/obj/item/weapon/storage/box/freezer,
|
||||||
|
prob(2);/obj/item/stack/nanopaste)
|
||||||
|
|
||||||
|
/obj/random/medical/pillbottle
|
||||||
|
name = "Random Pill Bottle"
|
||||||
|
desc = "This is a random pill bottle."
|
||||||
|
icon = 'icons/obj/chemical.dmi'
|
||||||
|
icon_state = "pill_canister"
|
||||||
|
|
||||||
|
/obj/random/medical/pillbottle/item_to_spawn()
|
||||||
|
return pick(prob(1);/obj/item/weapon/storage/pill_bottle/spaceacillin,
|
||||||
|
prob(1);/obj/item/weapon/storage/pill_bottle/dermaline,
|
||||||
|
prob(1);/obj/item/weapon/storage/pill_bottle/dexalin_plus,
|
||||||
|
prob(1);/obj/item/weapon/storage/pill_bottle/bicaridine,
|
||||||
|
prob(1);/obj/item/weapon/storage/pill_bottle/iron)
|
||||||
|
|
||||||
|
/obj/random/medical/lite
|
||||||
|
name = "Random Medicine"
|
||||||
|
desc = "This is a random simple medical item."
|
||||||
|
icon = 'icons/obj/items.dmi'
|
||||||
|
icon_state = "brutepack"
|
||||||
|
spawn_nothing_percentage = 25
|
||||||
|
|
||||||
|
/obj/random/medical/lite/item_to_spawn()
|
||||||
|
return pick(prob(4);/obj/item/stack/medical/bruise_pack,
|
||||||
|
prob(4);/obj/item/stack/medical/ointment,
|
||||||
|
prob(2);/obj/item/stack/medical/advanced/bruise_pack,
|
||||||
|
prob(2);/obj/item/stack/medical/advanced/ointment,
|
||||||
|
prob(1);/obj/item/stack/medical/splint,
|
||||||
|
prob(4);/obj/item/device/healthanalyzer,
|
||||||
|
prob(1);/obj/item/bodybag,
|
||||||
|
prob(3);/obj/item/weapon/reagent_containers/hypospray/autoinjector,
|
||||||
|
prob(2);/obj/item/weapon/storage/pill_bottle/kelotane,
|
||||||
|
prob(2);/obj/item/weapon/storage/pill_bottle/antitox)
|
||||||
|
|
||||||
|
/obj/random/firstaid
|
||||||
|
name = "Random First Aid Kit"
|
||||||
|
desc = "This is a random first aid kit."
|
||||||
|
icon = 'icons/obj/storage.dmi'
|
||||||
|
icon_state = "firstaid"
|
||||||
|
|
||||||
|
/obj/random/firstaid/item_to_spawn()
|
||||||
|
return pick(prob(4);/obj/item/weapon/storage/firstaid/regular,
|
||||||
|
prob(3);/obj/item/weapon/storage/firstaid/toxin,
|
||||||
|
prob(3);/obj/item/weapon/storage/firstaid/o2,
|
||||||
|
prob(2);/obj/item/weapon/storage/firstaid/adv,
|
||||||
|
prob(3);/obj/item/weapon/storage/firstaid/fire,
|
||||||
|
prob(1);/obj/item/weapon/storage/firstaid/combat)
|
||||||
|
|
||||||
|
/obj/random/contraband
|
||||||
|
name = "Random Illegal Item"
|
||||||
|
desc = "Hot Stuff."
|
||||||
|
icon = 'icons/obj/items.dmi'
|
||||||
|
icon_state = "purplecomb"
|
||||||
|
spawn_nothing_percentage = 50
|
||||||
|
/obj/random/contraband/item_to_spawn()
|
||||||
|
return pick(prob(6);/obj/item/weapon/storage/pill_bottle/tramadol,
|
||||||
|
prob(8);/obj/item/weapon/haircomb,
|
||||||
|
prob(4);/obj/item/weapon/storage/pill_bottle/happy,
|
||||||
|
prob(4);/obj/item/weapon/storage/pill_bottle/zoom,
|
||||||
|
prob(10);/obj/item/weapon/contraband/poster,
|
||||||
|
prob(4);/obj/item/weapon/material/butterfly,
|
||||||
|
prob(6);/obj/item/weapon/material/butterflyblade,
|
||||||
|
prob(6);/obj/item/weapon/material/butterflyhandle,
|
||||||
|
prob(6);/obj/item/weapon/material/wirerod,
|
||||||
|
prob(2);/obj/item/weapon/material/butterfly/switchblade,
|
||||||
|
prob(2);/obj/item/clothing/gloves/knuckledusters,
|
||||||
|
prob(1);/obj/item/weapon/material/knife/tacknife,
|
||||||
|
prob(1);/obj/item/clothing/suit/storage/vest/heavy/merc,
|
||||||
|
prob(1);/obj/item/weapon/beartrap,
|
||||||
|
prob(1);/obj/item/weapon/handcuffs,
|
||||||
|
prob(1);/obj/item/weapon/handcuffs/legcuffs,
|
||||||
|
prob(2);/obj/item/weapon/reagent_containers/syringe/drugs,
|
||||||
|
prob(1);/obj/item/weapon/reagent_containers/syringe/steroid)
|
||||||
|
|
||||||
|
/obj/random/soap
|
||||||
|
name = "Random Soap"
|
||||||
|
desc = "This is a random bar of soap."
|
||||||
|
icon = 'icons/obj/items.dmi'
|
||||||
|
icon_state = "soap"
|
||||||
|
|
||||||
|
/obj/random/soap/item_to_spawn()
|
||||||
|
return pick(prob(3);/obj/item/weapon/soap,
|
||||||
|
prob(2);/obj/item/weapon/soap/nanotrasen,
|
||||||
|
prob(2);/obj/item/weapon/soap/deluxe,
|
||||||
|
prob(1);/obj/item/weapon/soap/syndie,)
|
||||||
|
|
||||||
|
|
||||||
|
/obj/random/drinkbottle
|
||||||
|
name = "random drink"
|
||||||
|
desc = "This is a random drink."
|
||||||
|
icon = 'icons/obj/drinks.dmi'
|
||||||
|
icon_state = "whiskeybottle"
|
||||||
|
|
||||||
|
/obj/random/drinkbottle/item_to_spawn()
|
||||||
|
return pick(/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey,
|
||||||
|
/obj/item/weapon/reagent_containers/food/drinks/bottle/gin,
|
||||||
|
/obj/item/weapon/reagent_containers/food/drinks/bottle/specialwhiskey,
|
||||||
|
/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka,
|
||||||
|
/obj/item/weapon/reagent_containers/food/drinks/bottle/tequilla,
|
||||||
|
/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe,
|
||||||
|
/obj/item/weapon/reagent_containers/food/drinks/bottle/wine,
|
||||||
|
/obj/item/weapon/reagent_containers/food/drinks/bottle/cognac,
|
||||||
|
/obj/item/weapon/reagent_containers/food/drinks/bottle/rum,
|
||||||
|
/obj/item/weapon/reagent_containers/food/drinks/bottle/patron)
|
||||||
|
|
||||||
|
/obj/random/material //Random materials for building stuff
|
||||||
|
name = "random material"
|
||||||
|
desc = "This is a random material."
|
||||||
|
icon = 'icons/obj/items.dmi'
|
||||||
|
icon_state = "sheet-metal"
|
||||||
|
|
||||||
|
/obj/random/material/item_to_spawn()
|
||||||
|
return pick(/obj/item/stack/material/steel{amount = 10},
|
||||||
|
/obj/item/stack/material/glass{amount = 10},
|
||||||
|
/obj/item/stack/material/glass/reinforced{amount = 10},
|
||||||
|
/obj/item/stack/material/plastic{amount = 10},
|
||||||
|
/obj/item/stack/material/wood{amount = 10},
|
||||||
|
/obj/item/stack/material/cardboard{amount = 10},
|
||||||
|
/obj/item/stack/rods{amount = 10},
|
||||||
|
/obj/item/stack/material/plasteel{amount = 10})
|
||||||
|
|
||||||
|
/obj/random/tank
|
||||||
|
name = "random tank"
|
||||||
|
desc = "This is a tank."
|
||||||
|
icon = 'icons/obj/tank.dmi'
|
||||||
|
icon_state = "canister"
|
||||||
|
|
||||||
|
/obj/random/tank/item_to_spawn()
|
||||||
|
return pick(prob(5);/obj/item/weapon/tank/oxygen,
|
||||||
|
prob(4);/obj/item/weapon/tank/oxygen/yellow,
|
||||||
|
prob(4);/obj/item/weapon/tank/oxygen/red,
|
||||||
|
prob(3);/obj/item/weapon/tank/air,
|
||||||
|
prob(4);/obj/item/weapon/tank/emergency/oxygen,
|
||||||
|
prob(3);/obj/item/weapon/tank/emergency/oxygen/engi,
|
||||||
|
prob(2);/obj/item/weapon/tank/emergency/oxygen/double,
|
||||||
|
prob(1);/obj/item/device/suit_cooling_unit)
|
||||||
|
|
||||||
|
/obj/random/cigarettes
|
||||||
|
name = "random cigarettes"
|
||||||
|
desc = "This is a cigarette."
|
||||||
|
icon = 'icons/obj/cigarettes.dmi'
|
||||||
|
icon_state = "cigpacket"
|
||||||
|
|
||||||
|
/obj/random/cigarettes/item_to_spawn()
|
||||||
|
return pick(prob(5);/obj/item/weapon/storage/fancy/cigarettes,
|
||||||
|
prob(4);/obj/item/weapon/storage/fancy/cigarettes/dromedaryco,
|
||||||
|
prob(3);/obj/item/weapon/storage/fancy/cigarettes/killthroat,
|
||||||
|
prob(3);/obj/item/weapon/storage/fancy/cigarettes/luckystars,
|
||||||
|
prob(3);/obj/item/weapon/storage/fancy/cigarettes/jerichos,
|
||||||
|
prob(3);/obj/item/weapon/storage/fancy/cigarettes/menthols,
|
||||||
|
prob(3);/obj/item/weapon/storage/fancy/cigarettes/carcinomas,
|
||||||
|
prob(3);/obj/item/weapon/storage/fancy/cigarettes/professionals,
|
||||||
|
prob(1);/obj/item/weapon/storage/fancy/cigar,
|
||||||
|
prob(1);/obj/item/clothing/mask/smokable/cigarette/cigar,
|
||||||
|
prob(1);/obj/item/clothing/mask/smokable/cigarette/cigar/cohiba,
|
||||||
|
prob(1);/obj/item/clothing/mask/smokable/cigarette/cigar/havana)
|
||||||
|
|
||||||
|
/obj/random/coin
|
||||||
|
name = "random coin"
|
||||||
|
desc = "This is a coin spawn."
|
||||||
|
icon = 'icons/misc/mark.dmi'
|
||||||
|
icon_state = "rup"
|
||||||
|
|
||||||
|
/obj/random/coin/item_to_spawn()
|
||||||
|
return pick(prob(5);/obj/item/weapon/coin/silver,
|
||||||
|
prob(3);/obj/item/weapon/coin/iron,
|
||||||
|
prob(4);/obj/item/weapon/coin/gold,
|
||||||
|
prob(3);/obj/item/weapon/coin/phoron,
|
||||||
|
prob(1);/obj/item/weapon/coin/uranium,
|
||||||
|
prob(2);/obj/item/weapon/coin/platinum,
|
||||||
|
prob(1);/obj/item/weapon/coin/diamond)
|
||||||
|
|
||||||
|
/obj/random/action_figure
|
||||||
|
name = "random action figure"
|
||||||
|
desc = "This is a random action figure."
|
||||||
|
icon = 'icons/obj/toy.dmi'
|
||||||
|
icon_state = "assistant"
|
||||||
|
|
||||||
|
/obj/random/action_figure/item_to_spawn()
|
||||||
|
return pick(/obj/item/toy/figure/cmo,
|
||||||
|
/obj/item/toy/figure/assistant,
|
||||||
|
/obj/item/toy/figure/atmos,
|
||||||
|
/obj/item/toy/figure/bartender,
|
||||||
|
/obj/item/toy/figure/borg,
|
||||||
|
/obj/item/toy/figure/gardener,
|
||||||
|
/obj/item/toy/figure/captain,
|
||||||
|
/obj/item/toy/figure/cargotech,
|
||||||
|
/obj/item/toy/figure/ce,
|
||||||
|
/obj/item/toy/figure/chaplain,
|
||||||
|
/obj/item/toy/figure/chef,
|
||||||
|
/obj/item/toy/figure/chemist,
|
||||||
|
/obj/item/toy/figure/clown,
|
||||||
|
/obj/item/toy/figure/corgi,
|
||||||
|
/obj/item/toy/figure/detective,
|
||||||
|
/obj/item/toy/figure/dsquad,
|
||||||
|
/obj/item/toy/figure/engineer,
|
||||||
|
/obj/item/toy/figure/geneticist,
|
||||||
|
/obj/item/toy/figure/hop,
|
||||||
|
/obj/item/toy/figure/hos,
|
||||||
|
/obj/item/toy/figure/qm,
|
||||||
|
/obj/item/toy/figure/janitor,
|
||||||
|
/obj/item/toy/figure/agent,
|
||||||
|
/obj/item/toy/figure/librarian,
|
||||||
|
/obj/item/toy/figure/md,
|
||||||
|
/obj/item/toy/figure/mime,
|
||||||
|
/obj/item/toy/figure/miner,
|
||||||
|
/obj/item/toy/figure/ninja,
|
||||||
|
/obj/item/toy/figure/wizard,
|
||||||
|
/obj/item/toy/figure/rd,
|
||||||
|
/obj/item/toy/figure/roboticist,
|
||||||
|
/obj/item/toy/figure/scientist,
|
||||||
|
/obj/item/toy/figure/syndie,
|
||||||
|
/obj/item/toy/figure/secofficer,
|
||||||
|
/obj/item/toy/figure/warden,
|
||||||
|
/obj/item/toy/figure/psychologist,
|
||||||
|
/obj/item/toy/figure/paramedic,
|
||||||
|
/obj/item/toy/figure/ert)
|
||||||
|
|
||||||
|
/obj/random/plushie
|
||||||
|
name = "random plushie"
|
||||||
|
desc = "This is a random plushie."
|
||||||
|
icon = 'icons/obj/toy.dmi'
|
||||||
|
icon_state = "nymphplushie"
|
||||||
|
|
||||||
|
/obj/random/plushie/item_to_spawn()
|
||||||
|
return pick(/obj/structure/plushie/ian,
|
||||||
|
/obj/structure/plushie/drone,
|
||||||
|
/obj/structure/plushie/carp,
|
||||||
|
/obj/structure/plushie/beepsky,
|
||||||
|
/obj/item/toy/plushie/nymph,
|
||||||
|
/obj/item/toy/plushie/mouse,
|
||||||
|
/obj/item/toy/plushie/kitten,
|
||||||
|
/obj/item/toy/plushie/lizard)
|
||||||
|
|
||||||
|
/obj/random/toy
|
||||||
|
name = "random toy"
|
||||||
|
desc = "This is a random toy."
|
||||||
|
icon = 'icons/obj/toy.dmi'
|
||||||
|
icon_state = "ship"
|
||||||
|
|
||||||
|
/obj/random/toy/item_to_spawn()
|
||||||
|
return pick(/obj/item/toy/bosunwhistle,
|
||||||
|
/obj/item/toy/plushie/therapy/red,
|
||||||
|
/obj/item/toy/plushie/therapy/purple,
|
||||||
|
/obj/item/toy/plushie/therapy/blue,
|
||||||
|
/obj/item/toy/plushie/therapy/yellow,
|
||||||
|
/obj/item/toy/plushie/therapy/orange,
|
||||||
|
/obj/item/toy/plushie/therapy/green,
|
||||||
|
/obj/item/toy/cultsword,
|
||||||
|
/obj/item/toy/katana,
|
||||||
|
/obj/item/toy/snappop,
|
||||||
|
/obj/item/toy/sword,
|
||||||
|
/obj/item/toy/balloon,
|
||||||
|
/obj/item/toy/crossbow,
|
||||||
|
/obj/item/toy/blink,
|
||||||
|
/obj/item/toy/waterflower,
|
||||||
|
/obj/item/toy/prize/ripley,
|
||||||
|
/obj/item/toy/prize/fireripley,
|
||||||
|
/obj/item/toy/prize/deathripley,
|
||||||
|
/obj/item/toy/prize/gygax,
|
||||||
|
/obj/item/toy/prize/durand,
|
||||||
|
/obj/item/toy/prize/honk,
|
||||||
|
/obj/item/toy/prize/marauder,
|
||||||
|
/obj/item/toy/prize/seraph,
|
||||||
|
/obj/item/toy/prize/mauler,
|
||||||
|
/obj/item/toy/prize/odysseus,
|
||||||
|
/obj/item/toy/prize/phazon)
|
||||||
159
code/game/objects/random/mob.dm
Normal file
159
code/game/objects/random/mob.dm
Normal file
@@ -0,0 +1,159 @@
|
|||||||
|
/*
|
||||||
|
* Random Mobs
|
||||||
|
*/
|
||||||
|
|
||||||
|
/obj/random/mob
|
||||||
|
name = "Random Animal"
|
||||||
|
desc = "This is a random animal."
|
||||||
|
icon = 'icons/mob/animal.dmi'
|
||||||
|
icon_state = "chicken_white"
|
||||||
|
|
||||||
|
var/overwrite_hostility = 0
|
||||||
|
|
||||||
|
var/mob_faction = null
|
||||||
|
var/mob_returns_home = 0
|
||||||
|
var/mob_wander = 1
|
||||||
|
var/mob_wander_distance = 3
|
||||||
|
var/mob_hostile = 0
|
||||||
|
var/mob_retaliate = 0
|
||||||
|
|
||||||
|
/obj/random/mob/item_to_spawn()
|
||||||
|
return pick(prob(10);/mob/living/simple_animal/lizard,
|
||||||
|
prob(6);/mob/living/simple_animal/retaliate/diyaab,
|
||||||
|
prob(10);/mob/living/simple_animal/cat/fluff,
|
||||||
|
prob(6);/mob/living/simple_animal/cat/kitten,
|
||||||
|
prob(10);/mob/living/simple_animal/corgi,
|
||||||
|
prob(6);/mob/living/simple_animal/corgi/puppy,
|
||||||
|
prob(10);/mob/living/simple_animal/crab,
|
||||||
|
prob(10);/mob/living/simple_animal/chicken,
|
||||||
|
prob(6);/mob/living/simple_animal/chick,
|
||||||
|
prob(10);/mob/living/simple_animal/cow,
|
||||||
|
prob(6);/mob/living/simple_animal/retaliate/goat,
|
||||||
|
prob(10);/mob/living/simple_animal/penguin,
|
||||||
|
prob(10);/mob/living/simple_animal/mouse,
|
||||||
|
prob(10);/mob/living/simple_animal/yithian,
|
||||||
|
prob(10);/mob/living/simple_animal/tindalos,
|
||||||
|
prob(10);/mob/living/simple_animal/corgi/tamaskan,
|
||||||
|
prob(3);/mob/living/simple_animal/parrot,
|
||||||
|
prob(1);/mob/living/simple_animal/giant_crab)
|
||||||
|
|
||||||
|
/obj/random/mob/spawn_item() //These should only ever have simple mobs.
|
||||||
|
var/build_path = item_to_spawn()
|
||||||
|
|
||||||
|
var/mob/living/simple_animal/M = new build_path(src.loc)
|
||||||
|
M.ai_inactive = 1 //Don't fight eachother while we're still setting up!
|
||||||
|
if(mob_faction)
|
||||||
|
M.faction = mob_faction
|
||||||
|
M.returns_home = mob_returns_home
|
||||||
|
M.wander = mob_wander
|
||||||
|
M.wander_distance = mob_wander_distance
|
||||||
|
if(overwrite_hostility)
|
||||||
|
M.hostile = mob_hostile
|
||||||
|
M.retaliate = mob_retaliate
|
||||||
|
M.ai_inactive = 0 //Now you can kill eachother if your faction didn't override.
|
||||||
|
|
||||||
|
if(pixel_x || pixel_y)
|
||||||
|
M.pixel_x = pixel_x
|
||||||
|
M.pixel_y = pixel_y
|
||||||
|
|
||||||
|
/obj/random/mob/sif
|
||||||
|
name = "Random Sif Animal"
|
||||||
|
desc = "This is a random cold weather animal."
|
||||||
|
icon_state = "penguin"
|
||||||
|
|
||||||
|
mob_returns_home = 1
|
||||||
|
mob_wander_distance = 10
|
||||||
|
|
||||||
|
/obj/random/mob/sif/item_to_spawn()
|
||||||
|
return pick(prob(30);/mob/living/simple_animal/retaliate/diyaab,
|
||||||
|
prob(15);/mob/living/simple_animal/crab,
|
||||||
|
prob(15);/mob/living/simple_animal/penguin,
|
||||||
|
prob(15);/mob/living/simple_animal/mouse,
|
||||||
|
prob(15);/mob/living/simple_animal/corgi/tamaskan,
|
||||||
|
prob(2);/mob/living/simple_animal/hostile/giant_spider/frost,
|
||||||
|
prob(1);/mob/living/simple_animal/hostile/goose,
|
||||||
|
prob(20);/mob/living/simple_animal/giant_crab)
|
||||||
|
|
||||||
|
/obj/random/mob/sif/hostile
|
||||||
|
name = "Random Hostile Sif Animal"
|
||||||
|
desc = "This is a random hostile cold weather animal."
|
||||||
|
icon_state = "frost"
|
||||||
|
|
||||||
|
/obj/random/mob/sif/hostile/item_to_spawn()
|
||||||
|
return pick(prob(22);/mob/living/simple_animal/hostile/savik,
|
||||||
|
prob(33);/mob/living/simple_animal/hostile/giant_spider/frost,
|
||||||
|
prob(45);/mob/living/simple_animal/hostile/shantak)
|
||||||
|
|
||||||
|
/obj/random/mob/spider
|
||||||
|
name = "Random Spider" //Spiders should patrol where they spawn.
|
||||||
|
desc = "This is a random boring spider."
|
||||||
|
icon_state = "guard"
|
||||||
|
|
||||||
|
mob_returns_home = 1
|
||||||
|
mob_wander_distance = 4
|
||||||
|
|
||||||
|
/obj/random/mob/spider/item_to_spawn()
|
||||||
|
return pick(prob(22);/mob/living/simple_animal/hostile/giant_spider/nurse,
|
||||||
|
prob(33);/mob/living/simple_animal/hostile/giant_spider/hunter,
|
||||||
|
prob(45);/mob/living/simple_animal/hostile/giant_spider)
|
||||||
|
|
||||||
|
/obj/random/mob/spider/mutant
|
||||||
|
name = "Random Mutant Spider"
|
||||||
|
desc = "This is a random mutated spider."
|
||||||
|
icon_state = "phoron"
|
||||||
|
|
||||||
|
/obj/random/mob/spider/mutant/item_to_spawn()
|
||||||
|
return pick(prob(5);/obj/random/mob/spider,
|
||||||
|
prob(10);/mob/living/simple_animal/hostile/giant_spider/webslinger,
|
||||||
|
prob(10);/mob/living/simple_animal/hostile/giant_spider/carrier,
|
||||||
|
prob(33);/mob/living/simple_animal/hostile/giant_spider/lurker,
|
||||||
|
prob(33);/mob/living/simple_animal/hostile/giant_spider/tunneler,
|
||||||
|
prob(40);/mob/living/simple_animal/hostile/giant_spider/pepper,
|
||||||
|
prob(20);/mob/living/simple_animal/hostile/giant_spider/thermic,
|
||||||
|
prob(40);/mob/living/simple_animal/hostile/giant_spider/electric,
|
||||||
|
prob(1);/mob/living/simple_animal/hostile/giant_spider/phorogenic,
|
||||||
|
prob(40);/mob/living/simple_animal/hostile/giant_spider/frost)
|
||||||
|
|
||||||
|
/obj/random/mob/robotic
|
||||||
|
name = "Random Robot Mob"
|
||||||
|
desc = "This is a random robot."
|
||||||
|
icon_state = "drone_dead"
|
||||||
|
|
||||||
|
overwrite_hostility = 1
|
||||||
|
|
||||||
|
mob_faction = "malf_drone"
|
||||||
|
mob_returns_home = 1
|
||||||
|
mob_wander = 1
|
||||||
|
mob_wander_distance = 5
|
||||||
|
mob_hostile = 1
|
||||||
|
mob_retaliate = 1
|
||||||
|
|
||||||
|
/obj/random/mob/robotic/item_to_spawn() //Hivebots have a total number of 'lots' equal to the lesser drone, at 60.
|
||||||
|
return pick(prob(60);/mob/living/simple_animal/hostile/malf_drone/lesser,
|
||||||
|
prob(50);/mob/living/simple_animal/hostile/malf_drone,
|
||||||
|
prob(15);/mob/living/simple_animal/hostile/mecha/malf_drone,
|
||||||
|
prob(10);/mob/living/simple_animal/hostile/hivebot,
|
||||||
|
prob(15);/mob/living/simple_animal/hostile/hivebot/swarm,
|
||||||
|
prob(10);/mob/living/simple_animal/hostile/hivebot/range,
|
||||||
|
prob(5);/mob/living/simple_animal/hostile/hivebot/range/rapid,
|
||||||
|
prob(5);/mob/living/simple_animal/hostile/hivebot/range/ion,
|
||||||
|
prob(5);/mob/living/simple_animal/hostile/hivebot/range/laser,
|
||||||
|
prob(5);/mob/living/simple_animal/hostile/hivebot/range/strong,
|
||||||
|
prob(5);/mob/living/simple_animal/hostile/hivebot/range/guard)
|
||||||
|
|
||||||
|
/obj/random/mob/robotic/hivebot
|
||||||
|
name = "Random Hivebot"
|
||||||
|
desc = "This is a random hivebot."
|
||||||
|
icon_state = "drone3"
|
||||||
|
|
||||||
|
mob_faction = "hivebot"
|
||||||
|
|
||||||
|
/obj/random/mob/robotic/hivebot/item_to_spawn()
|
||||||
|
return pick(prob(10);/mob/living/simple_animal/hostile/hivebot,
|
||||||
|
prob(15);/mob/living/simple_animal/hostile/hivebot/swarm,
|
||||||
|
prob(10);/mob/living/simple_animal/hostile/hivebot/range,
|
||||||
|
prob(5);/mob/living/simple_animal/hostile/hivebot/range/rapid,
|
||||||
|
prob(5);/mob/living/simple_animal/hostile/hivebot/range/ion,
|
||||||
|
prob(5);/mob/living/simple_animal/hostile/hivebot/range/laser,
|
||||||
|
prob(5);/mob/living/simple_animal/hostile/hivebot/range/strong,
|
||||||
|
prob(5);/mob/living/simple_animal/hostile/hivebot/range/guard)
|
||||||
113
code/game/objects/random/spacesuits.dm
Normal file
113
code/game/objects/random/spacesuits.dm
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
|
||||||
|
// Spaceproof clothing sets go in here
|
||||||
|
|
||||||
|
/obj/random/multiple/voidsuit
|
||||||
|
name = "Random Voidsuit"
|
||||||
|
desc = "This is a random voidsuit."
|
||||||
|
icon = 'icons/obj/clothing/suits.dmi'
|
||||||
|
icon_state = "void"
|
||||||
|
|
||||||
|
/obj/random/multiple/voidsuit/item_to_spawn()
|
||||||
|
return pick(
|
||||||
|
prob(5);list(
|
||||||
|
/obj/item/clothing/suit/space/void,
|
||||||
|
/obj/item/clothing/head/helmet/space/void
|
||||||
|
),
|
||||||
|
prob(5);list(
|
||||||
|
/obj/item/clothing/suit/space/void/atmos,
|
||||||
|
/obj/item/clothing/head/helmet/space/void/atmos
|
||||||
|
),
|
||||||
|
prob(5);list(
|
||||||
|
/obj/item/clothing/suit/space/void/atmos/alt,
|
||||||
|
/obj/item/clothing/head/helmet/space/void/atmos/alt
|
||||||
|
),
|
||||||
|
prob(5);list(
|
||||||
|
/obj/item/clothing/suit/space/void/engineering,
|
||||||
|
/obj/item/clothing/head/helmet/space/void/engineering
|
||||||
|
),
|
||||||
|
prob(5);list(
|
||||||
|
/obj/item/clothing/suit/space/void/engineering/alt,
|
||||||
|
/obj/item/clothing/head/helmet/space/void/engineering/alt
|
||||||
|
),
|
||||||
|
prob(5);list(
|
||||||
|
/obj/item/clothing/suit/space/void/engineering/construction,
|
||||||
|
/obj/item/clothing/head/helmet/space/void/engineering/construction
|
||||||
|
),
|
||||||
|
prob(5);list(
|
||||||
|
/obj/item/clothing/suit/space/void/engineering/salvage,
|
||||||
|
/obj/item/clothing/head/helmet/space/void/engineering/salvage
|
||||||
|
),
|
||||||
|
prob(5);list(
|
||||||
|
/obj/item/clothing/suit/space/void/medical,
|
||||||
|
/obj/item/clothing/head/helmet/space/void/medical
|
||||||
|
),
|
||||||
|
prob(5);list(
|
||||||
|
/obj/item/clothing/suit/space/void/medical/alt,
|
||||||
|
/obj/item/clothing/head/helmet/space/void/medical/alt
|
||||||
|
),
|
||||||
|
prob(5);list(
|
||||||
|
/obj/item/clothing/suit/space/void/medical/bio,
|
||||||
|
/obj/item/clothing/head/helmet/space/void/medical/bio
|
||||||
|
),
|
||||||
|
prob(5);list(
|
||||||
|
/obj/item/clothing/suit/space/void/medical/emt,
|
||||||
|
/obj/item/clothing/head/helmet/space/void/medical/emt
|
||||||
|
),
|
||||||
|
prob(5);list(
|
||||||
|
/obj/item/clothing/suit/space/void/merc,
|
||||||
|
/obj/item/clothing/head/helmet/space/void/merc
|
||||||
|
),
|
||||||
|
prob(5);list(
|
||||||
|
/obj/item/clothing/suit/space/void/mining,
|
||||||
|
/obj/item/clothing/head/helmet/space/void/mining
|
||||||
|
),
|
||||||
|
prob(5);list(
|
||||||
|
/obj/item/clothing/suit/space/void/mining/alt,
|
||||||
|
/obj/item/clothing/head/helmet/space/void/mining/alt
|
||||||
|
),
|
||||||
|
prob(5);list(
|
||||||
|
/obj/item/clothing/suit/space/void/security,
|
||||||
|
/obj/item/clothing/head/helmet/space/void/security
|
||||||
|
),
|
||||||
|
prob(5);list(
|
||||||
|
/obj/item/clothing/suit/space/void/security/alt,
|
||||||
|
/obj/item/clothing/head/helmet/space/void/security/alt
|
||||||
|
),
|
||||||
|
prob(5);list(
|
||||||
|
/obj/item/clothing/suit/space/void/security/riot,
|
||||||
|
/obj/item/clothing/head/helmet/space/void/security/riot
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
/obj/random/multiple/voidsuit/mining
|
||||||
|
name = "Random Mining Voidsuit"
|
||||||
|
desc = "This is a random mining voidsuit."
|
||||||
|
icon = 'icons/obj/clothing/suits.dmi'
|
||||||
|
icon_state = "rig-mining"
|
||||||
|
|
||||||
|
/obj/random/multiple/voidsuit/mining/item_to_spawn()
|
||||||
|
return pick(
|
||||||
|
prob(5);list(
|
||||||
|
/obj/item/clothing/suit/space/void/mining,
|
||||||
|
/obj/item/clothing/head/helmet/space/void/mining
|
||||||
|
),
|
||||||
|
prob(1);list(
|
||||||
|
/obj/item/clothing/suit/space/void/mining/alt,
|
||||||
|
/obj/item/clothing/head/helmet/space/void/mining/alt
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
/obj/random/rigsuit
|
||||||
|
name = "Random rigsuit"
|
||||||
|
desc = "This is a random rigsuit."
|
||||||
|
icon = 'icons/obj/rig_modules.dmi'
|
||||||
|
icon_state = "generic"
|
||||||
|
|
||||||
|
/obj/random/rigsuit/item_to_spawn()
|
||||||
|
return pick(prob(4);/obj/item/weapon/rig/light/hacker,
|
||||||
|
prob(5);/obj/item/weapon/rig/industrial,
|
||||||
|
prob(5);/obj/item/weapon/rig/eva,
|
||||||
|
prob(4);/obj/item/weapon/rig/light/stealth,
|
||||||
|
prob(3);/obj/item/weapon/rig/hazard,
|
||||||
|
prob(1);/obj/item/weapon/rig/merc/empty)
|
||||||
@@ -123,10 +123,10 @@
|
|||||||
|
|
||||||
/obj/structure/mirror/raider/attack_hand(var/mob/living/carbon/human/user)
|
/obj/structure/mirror/raider/attack_hand(var/mob/living/carbon/human/user)
|
||||||
if(istype(get_area(src),/area/syndicate_mothership))
|
if(istype(get_area(src),/area/syndicate_mothership))
|
||||||
if(istype(user) && user.mind && user.mind.special_role == "Raider" && user.species.name != "Vox" && is_alien_whitelisted(user, "Vox"))
|
if(istype(user) && user.mind && user.mind.special_role == "Raider" && user.species.name != SPECIES_VOX && is_alien_whitelisted(user, SPECIES_VOX))
|
||||||
var/choice = input("Do you wish to become a true Vox of the Shoal? This is not reversible.") as null|anything in list("No","Yes")
|
var/choice = input("Do you wish to become a true Vox of the Shoal? This is not reversible.") as null|anything in list("No","Yes")
|
||||||
if(choice && choice == "Yes")
|
if(choice && choice == "Yes")
|
||||||
var/mob/living/carbon/human/vox/vox = new(get_turf(src),"Vox")
|
var/mob/living/carbon/human/vox/vox = new(get_turf(src),SPECIES_VOX)
|
||||||
vox.gender = user.gender
|
vox.gender = user.gender
|
||||||
raiders.equip(vox)
|
raiders.equip(vox)
|
||||||
if(user.mind)
|
if(user.mind)
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
var/place_dir = turn(direction, 180)
|
var/place_dir = turn(direction, 180)
|
||||||
if(!mining_overlay_cache["rock_side_[place_dir]"])
|
if(!mining_overlay_cache["rock_side_[place_dir]"])
|
||||||
mining_overlay_cache["rock_side_[place_dir]"] = image('icons/turf/walls.dmi', "rock_side", dir = place_dir)
|
mining_overlay_cache["rock_side_[place_dir]"] = image('icons/turf/walls.dmi', "rock_side", dir = place_dir)
|
||||||
T.overlays += mining_overlay_cache["rock_side_[place_dir]"]
|
T.add_overlay(mining_overlay_cache["rock_side_[place_dir]"])
|
||||||
|
|
||||||
/turf/simulated/wall/solidrock/initialize()
|
/turf/simulated/wall/solidrock/initialize()
|
||||||
icon_state = base_state
|
icon_state = base_state
|
||||||
|
|||||||
@@ -101,6 +101,12 @@ turf/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|||||||
return
|
return
|
||||||
if (do_after(user, 25 + (5 * user.weakened)) && !(user.stat))
|
if (do_after(user, 25 + (5 * user.weakened)) && !(user.stat))
|
||||||
step_towards(O, src)
|
step_towards(O, src)
|
||||||
|
if(ismob(O))
|
||||||
|
animate(O, transform = turn(O.transform, 20), time = 2)
|
||||||
|
sleep(2)
|
||||||
|
animate(O, transform = turn(O.transform, -40), time = 4)
|
||||||
|
sleep(4)
|
||||||
|
animate(O, transform = turn(O.transform, 20), time = 2)
|
||||||
|
|
||||||
/turf/Enter(atom/movable/mover as mob|obj, atom/forget as mob|obj|turf|area)
|
/turf/Enter(atom/movable/mover as mob|obj, atom/forget as mob|obj|turf|area)
|
||||||
if(movement_disabled && usr.ckey != movement_disabled_exception)
|
if(movement_disabled && usr.ckey != movement_disabled_exception)
|
||||||
|
|||||||
@@ -1001,11 +1001,6 @@
|
|||||||
//strip their stuff and stick it in the crate
|
//strip their stuff and stick it in the crate
|
||||||
for(var/obj/item/I in M)
|
for(var/obj/item/I in M)
|
||||||
M.drop_from_inventory(I, locker)
|
M.drop_from_inventory(I, locker)
|
||||||
if(ishuman(M))
|
|
||||||
var/mob/living/carbon/human/H = M
|
|
||||||
H.update_icons_layers() //Cheaper
|
|
||||||
else
|
|
||||||
M.update_icons()
|
|
||||||
|
|
||||||
//so they black out before warping
|
//so they black out before warping
|
||||||
M.Paralyse(5)
|
M.Paralyse(5)
|
||||||
@@ -1188,10 +1183,8 @@
|
|||||||
usr << "This can only be used on instances of type /mob/living/carbon/human"
|
usr << "This can only be used on instances of type /mob/living/carbon/human"
|
||||||
return
|
return
|
||||||
var/block=text2num(href_list["block"])
|
var/block=text2num(href_list["block"])
|
||||||
//testing("togmutate([href_list["block"]] -> [block])")
|
|
||||||
usr.client.cmd_admin_toggle_block(H,block)
|
usr.client.cmd_admin_toggle_block(H,block)
|
||||||
show_player_panel(H)
|
show_player_panel(H)
|
||||||
//H.regenerate_icons()
|
|
||||||
|
|
||||||
else if(href_list["adminplayeropts"])
|
else if(href_list["adminplayeropts"])
|
||||||
var/mob/M = locate(href_list["adminplayeropts"])
|
var/mob/M = locate(href_list["adminplayeropts"])
|
||||||
|
|||||||
@@ -37,7 +37,6 @@
|
|||||||
if(ishuman(usr))
|
if(ishuman(usr))
|
||||||
var/mob/living/carbon/human/H = usr
|
var/mob/living/carbon/human/H = usr
|
||||||
H.name = H.get_visible_name()
|
H.name = H.get_visible_name()
|
||||||
// usr.regenerate_icons() //So the name is updated properly
|
|
||||||
|
|
||||||
usr.loc = O.loc // Appear where the object you were controlling is -- TLE
|
usr.loc = O.loc // Appear where the object you were controlling is -- TLE
|
||||||
usr.client.eye = usr
|
usr.client.eye = usr
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
var/corpseidjob = null // Needs to be in quotes, such as "Clown" or "Chef." This just determines what the ID reads as, not their access
|
var/corpseidjob = null // Needs to be in quotes, such as "Clown" or "Chef." This just determines what the ID reads as, not their access
|
||||||
var/corpseidaccess = null //This is for access. See access.dm for which jobs give what access. Again, put in quotes. Use "Captain" if you want it to be all access.
|
var/corpseidaccess = null //This is for access. See access.dm for which jobs give what access. Again, put in quotes. Use "Captain" if you want it to be all access.
|
||||||
var/corpseidicon = null //For setting it to be a gold, silver, CentCom etc ID
|
var/corpseidicon = null //For setting it to be a gold, silver, CentCom etc ID
|
||||||
var/species = "Human"
|
var/species = SPECIES_HUMAN
|
||||||
delete_me = TRUE
|
delete_me = TRUE
|
||||||
|
|
||||||
/obj/effect/landmark/corpse/initialize()
|
/obj/effect/landmark/corpse/initialize()
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/obj/machinery/gateway
|
/obj/machinery/gateway
|
||||||
name = "gateway"
|
name = "gateway"
|
||||||
desc = "A mysterious gateway built by unknown hands. It allows for faster than light travel to far-flung locations and even alternate realities."
|
desc = "A mysterious gateway built by unknown hands. It allows for faster than light travel to far-flung locations and even alternate realities." //VOREStation Edit
|
||||||
icon = 'icons/obj/machines/gateway.dmi'
|
icon = 'icons/obj/machines/gateway.dmi'
|
||||||
icon_state = "off"
|
icon_state = "off"
|
||||||
density = 1
|
density = 1
|
||||||
@@ -252,10 +252,12 @@ obj/machinery/gateway/centerstation/process()
|
|||||||
user << "<font color='black'>The gate is already calibrated, there is no work for you to do here.</font>"
|
user << "<font color='black'>The gate is already calibrated, there is no work for you to do here.</font>"
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
|
// VOREStation Add
|
||||||
stationgate = locate(/obj/machinery/gateway/centerstation)
|
stationgate = locate(/obj/machinery/gateway/centerstation)
|
||||||
if(!stationgate)
|
if(!stationgate)
|
||||||
user << "<span class='notice'>Error: Recalibration failed. No destination found... That can't be good.</span>"
|
user << "<span class='notice'>Error: Recalibration failed. No destination found... That can't be good.</span>"
|
||||||
return
|
return
|
||||||
|
// VOREStation Add End
|
||||||
else
|
else
|
||||||
user << "<font color='blue'><b>Recalibration successful!</b>:</font><font color='black'> This gate's systems have been fine tuned. Travel to this gate will now be on target.</font>"
|
user << "<font color='blue'><b>Recalibration successful!</b>:</font><font color='black'> This gate's systems have been fine tuned. Travel to this gate will now be on target.</font>"
|
||||||
calibrated = 1
|
calibrated = 1
|
||||||
|
|||||||
@@ -104,8 +104,8 @@
|
|||||||
// Note that the current station being used will be pruned from this list upon being instantiated
|
// Note that the current station being used will be pruned from this list upon being instantiated
|
||||||
destination_names = list(
|
destination_names = list(
|
||||||
"NSS Exodus in Nyx",
|
"NSS Exodus in Nyx",
|
||||||
//"NCS Northern Star in Vir",
|
"NCS Northern Star in Vir",
|
||||||
"NLS Southern Cross in Vir",
|
//"NLS Southern Cross in Vir",
|
||||||
"NAS Vir Central Command",
|
"NAS Vir Central Command",
|
||||||
"a dockyard orbiting Sif",
|
"a dockyard orbiting Sif",
|
||||||
"an asteroid orbiting Kara",
|
"an asteroid orbiting Kara",
|
||||||
@@ -235,6 +235,19 @@
|
|||||||
motto = ""
|
motto = ""
|
||||||
|
|
||||||
ship_prefixes = list("WTV" = "freight")
|
ship_prefixes = list("WTV" = "freight")
|
||||||
|
ship_names = list(
|
||||||
|
"Comet",
|
||||||
|
"Aurora",
|
||||||
|
"Supernova",
|
||||||
|
"Nebula",
|
||||||
|
"Galaxy",
|
||||||
|
"Starburst",
|
||||||
|
"Constellation",
|
||||||
|
"Pulsar",
|
||||||
|
"Quark",
|
||||||
|
"Void",
|
||||||
|
"Asteroid"
|
||||||
|
)
|
||||||
destination_names = list()
|
destination_names = list()
|
||||||
|
|
||||||
/datum/lore/organization/tsc/bishop
|
/datum/lore/organization/tsc/bishop
|
||||||
|
|||||||
@@ -152,7 +152,7 @@ datum/preferences/proc/set_biological_gender(var/gender)
|
|||||||
if(pref.species)
|
if(pref.species)
|
||||||
S = all_species[pref.species]
|
S = all_species[pref.species]
|
||||||
else
|
else
|
||||||
S = all_species["Human"]
|
S = all_species[SPECIES_HUMAN]
|
||||||
var/list/possible_genders = S.genders
|
var/list/possible_genders = S.genders
|
||||||
if(!pref.organ_data || pref.organ_data[BP_TORSO] != "cyborg")
|
if(!pref.organ_data || pref.organ_data[BP_TORSO] != "cyborg")
|
||||||
return possible_genders
|
return possible_genders
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
|
|||||||
|
|
||||||
/datum/category_item/player_setup_item/general/body/sanitize_character(var/savefile/S)
|
/datum/category_item/player_setup_item/general/body/sanitize_character(var/savefile/S)
|
||||||
if(!pref.species || !(pref.species in playable_species))
|
if(!pref.species || !(pref.species in playable_species))
|
||||||
pref.species = "Human"
|
pref.species = SPECIES_HUMAN
|
||||||
pref.r_hair = sanitize_integer(pref.r_hair, 0, 255, initial(pref.r_hair))
|
pref.r_hair = sanitize_integer(pref.r_hair, 0, 255, initial(pref.r_hair))
|
||||||
pref.g_hair = sanitize_integer(pref.g_hair, 0, 255, initial(pref.g_hair))
|
pref.g_hair = sanitize_integer(pref.g_hair, 0, 255, initial(pref.g_hair))
|
||||||
pref.b_hair = sanitize_integer(pref.b_hair, 0, 255, initial(pref.b_hair))
|
pref.b_hair = sanitize_integer(pref.b_hair, 0, 255, initial(pref.b_hair))
|
||||||
@@ -591,7 +591,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
|
|||||||
pref.rlimb_data[second_limb] = null
|
pref.rlimb_data[second_limb] = null
|
||||||
|
|
||||||
if("Prosthesis")
|
if("Prosthesis")
|
||||||
var/tmp_species = pref.species ? pref.species : "Human"
|
var/tmp_species = pref.species ? pref.species : SPECIES_HUMAN
|
||||||
var/list/usable_manufacturers = list()
|
var/list/usable_manufacturers = list()
|
||||||
for(var/company in chargen_robolimbs)
|
for(var/company in chargen_robolimbs)
|
||||||
var/datum/robolimb/M = chargen_robolimbs[company]
|
var/datum/robolimb/M = chargen_robolimbs[company]
|
||||||
@@ -734,7 +734,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
|
|||||||
|
|
||||||
/datum/category_item/player_setup_item/general/body/proc/SetSpecies(mob/user)
|
/datum/category_item/player_setup_item/general/body/proc/SetSpecies(mob/user)
|
||||||
if(!pref.species_preview || !(pref.species_preview in all_species))
|
if(!pref.species_preview || !(pref.species_preview in all_species))
|
||||||
pref.species_preview = "Human"
|
pref.species_preview = SPECIES_HUMAN
|
||||||
var/datum/species/current_species = all_species[pref.species_preview]
|
var/datum/species/current_species = all_species[pref.species_preview]
|
||||||
var/dat = "<body>"
|
var/dat = "<body>"
|
||||||
dat += "<center><h2>[current_species.name] \[<a href='?src=\ref[src];show_species=1'>change</a>\]</h2></center><hr/>"
|
dat += "<center><h2>[current_species.name] \[<a href='?src=\ref[src];show_species=1'>change</a>\]</h2></center><hr/>"
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
// Alien clothing.
|
// Alien clothing.
|
||||||
/datum/gear/suit/zhan_furs
|
/datum/gear/suit/zhan_furs
|
||||||
display_name = "Zhan-Khazan furs (Tajara)"
|
display_name = "Zhan-Khazan furs (Tajaran)"
|
||||||
path = /obj/item/clothing/suit/tajaran/furs
|
path = /obj/item/clothing/suit/tajaran/furs
|
||||||
sort_category = "Xenowear"
|
sort_category = "Xenowear"
|
||||||
|
|
||||||
/datum/gear/head/zhan_scarf
|
/datum/gear/head/zhan_scarf
|
||||||
display_name = "Zhan headscarf"
|
display_name = "Zhan headscarf"
|
||||||
path = /obj/item/clothing/head/tajaran/scarf
|
path = /obj/item/clothing/head/tajaran/scarf
|
||||||
whitelisted = "Tajara"
|
whitelisted = SPECIES_TAJ
|
||||||
|
|
||||||
/datum/gear/suit/unathi_mantle
|
/datum/gear/suit/unathi_mantle
|
||||||
display_name = "hide mantle (Unathi)"
|
display_name = "hide mantle (Unathi)"
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
display_name = "headtail chain selection (Skrell)"
|
display_name = "headtail chain selection (Skrell)"
|
||||||
path = /obj/item/clothing/ears/skrell/chain
|
path = /obj/item/clothing/ears/skrell/chain
|
||||||
sort_category = "Xenowear"
|
sort_category = "Xenowear"
|
||||||
whitelisted = "Skrell"
|
whitelisted = SPECIES_SKRELL
|
||||||
|
|
||||||
/datum/gear/ears/skrell/chains/New()
|
/datum/gear/ears/skrell/chains/New()
|
||||||
..()
|
..()
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
display_name = "headtail band selection (Skrell)"
|
display_name = "headtail band selection (Skrell)"
|
||||||
path = /obj/item/clothing/ears/skrell/band
|
path = /obj/item/clothing/ears/skrell/band
|
||||||
sort_category = "Xenowear"
|
sort_category = "Xenowear"
|
||||||
whitelisted = "Skrell"
|
whitelisted = SPECIES_SKRELL
|
||||||
|
|
||||||
/datum/gear/ears/skrell/bands/New()
|
/datum/gear/ears/skrell/bands/New()
|
||||||
..()
|
..()
|
||||||
@@ -47,7 +47,7 @@
|
|||||||
display_name = "short headtail cloth (Skrell)"
|
display_name = "short headtail cloth (Skrell)"
|
||||||
path = /obj/item/clothing/ears/skrell/cloth_male/black
|
path = /obj/item/clothing/ears/skrell/cloth_male/black
|
||||||
sort_category = "Xenowear"
|
sort_category = "Xenowear"
|
||||||
whitelisted = "Skrell"
|
whitelisted = SPECIES_SKRELL
|
||||||
|
|
||||||
/datum/gear/ears/skrell/cloth/short/New()
|
/datum/gear/ears/skrell/cloth/short/New()
|
||||||
..()
|
..()
|
||||||
@@ -61,7 +61,7 @@
|
|||||||
display_name = "long headtail cloth (Skrell)"
|
display_name = "long headtail cloth (Skrell)"
|
||||||
path = /obj/item/clothing/ears/skrell/cloth_female/black
|
path = /obj/item/clothing/ears/skrell/cloth_female/black
|
||||||
sort_category = "Xenowear"
|
sort_category = "Xenowear"
|
||||||
whitelisted = "Skrell"
|
whitelisted = SPECIES_SKRELL
|
||||||
|
|
||||||
/datum/gear/ears/skrell/cloth/long/New()
|
/datum/gear/ears/skrell/cloth/long/New()
|
||||||
..()
|
..()
|
||||||
@@ -75,7 +75,7 @@
|
|||||||
display_name = "Colored bands (Skrell)"
|
display_name = "Colored bands (Skrell)"
|
||||||
path = /obj/item/clothing/ears/skrell/colored/band
|
path = /obj/item/clothing/ears/skrell/colored/band
|
||||||
sort_category = "Xenowear"
|
sort_category = "Xenowear"
|
||||||
whitelisted = "Skrell"
|
whitelisted = SPECIES_SKRELL
|
||||||
|
|
||||||
/datum/gear/ears/skrell/colored/band/New()
|
/datum/gear/ears/skrell/colored/band/New()
|
||||||
..()
|
..()
|
||||||
@@ -85,7 +85,7 @@
|
|||||||
display_name = "Colored chain (Skrell)"
|
display_name = "Colored chain (Skrell)"
|
||||||
path = /obj/item/clothing/ears/skrell/colored/chain
|
path = /obj/item/clothing/ears/skrell/colored/chain
|
||||||
sort_category = "Xenowear"
|
sort_category = "Xenowear"
|
||||||
whitelisted = "Skrell"
|
whitelisted = SPECIES_SKRELL
|
||||||
|
|
||||||
/datum/gear/ears/skrell/colored/chain/New()
|
/datum/gear/ears/skrell/colored/chain/New()
|
||||||
..()
|
..()
|
||||||
@@ -94,7 +94,7 @@
|
|||||||
/datum/gear/uniform/smock
|
/datum/gear/uniform/smock
|
||||||
display_name = "smock selection (Teshari)"
|
display_name = "smock selection (Teshari)"
|
||||||
path = /obj/item/clothing/under/seromi/smock
|
path = /obj/item/clothing/under/seromi/smock
|
||||||
whitelisted = "Teshari"
|
whitelisted = SPECIES_TESHARI
|
||||||
sort_category = "Xenowear"
|
sort_category = "Xenowear"
|
||||||
|
|
||||||
/datum/gear/uniform/smock/New()
|
/datum/gear/uniform/smock/New()
|
||||||
@@ -108,7 +108,7 @@
|
|||||||
/datum/gear/uniform/undercoat
|
/datum/gear/uniform/undercoat
|
||||||
display_name = "undercoat selection (Teshari)"
|
display_name = "undercoat selection (Teshari)"
|
||||||
path = /obj/item/clothing/under/seromi/undercoat
|
path = /obj/item/clothing/under/seromi/undercoat
|
||||||
whitelisted = "Teshari"
|
whitelisted = SPECIES_TESHARI
|
||||||
sort_category = "Xenowear"
|
sort_category = "Xenowear"
|
||||||
|
|
||||||
/datum/gear/uniform/undercoat/New()
|
/datum/gear/uniform/undercoat/New()
|
||||||
@@ -122,7 +122,7 @@
|
|||||||
/datum/gear/suit/cloak
|
/datum/gear/suit/cloak
|
||||||
display_name = "cloak selection (Teshari)"
|
display_name = "cloak selection (Teshari)"
|
||||||
path = /obj/item/clothing/suit/storage/seromi/cloak
|
path = /obj/item/clothing/suit/storage/seromi/cloak
|
||||||
whitelisted = "Teshari"
|
whitelisted = SPECIES_TESHARI
|
||||||
sort_category = "Xenowear"
|
sort_category = "Xenowear"
|
||||||
|
|
||||||
/datum/gear/suit/cloak/New()
|
/datum/gear/suit/cloak/New()
|
||||||
|
|||||||
@@ -226,7 +226,7 @@
|
|||||||
mutually_exclusive = list(/datum/trait/modifier/mental/xenophobe)
|
mutually_exclusive = list(/datum/trait/modifier/mental/xenophobe)
|
||||||
|
|
||||||
/datum/trait/modifier/mental/tajaraphobe
|
/datum/trait/modifier/mental/tajaraphobe
|
||||||
name = "Tajara-phobic"
|
name = "Tajaran-phobic"
|
||||||
desc = "Boilerplate racism for cats goes here."
|
desc = "Boilerplate racism for cats goes here."
|
||||||
mutually_exclusive = list(/datum/trait/modifier/mental/xenophobe)
|
mutually_exclusive = list(/datum/trait/modifier/mental/xenophobe)
|
||||||
|
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ datum/preferences
|
|||||||
var/r_eyes = 0 //Eye color
|
var/r_eyes = 0 //Eye color
|
||||||
var/g_eyes = 0 //Eye color
|
var/g_eyes = 0 //Eye color
|
||||||
var/b_eyes = 0 //Eye color
|
var/b_eyes = 0 //Eye color
|
||||||
var/species = "Human" //Species datum to use.
|
var/species = SPECIES_HUMAN //Species datum to use.
|
||||||
var/species_preview //Used for the species selection window.
|
var/species_preview //Used for the species selection window.
|
||||||
var/list/alternate_languages = list() //Secondary language(s)
|
var/list/alternate_languages = list() //Secondary language(s)
|
||||||
var/list/language_prefixes = list() //Kanguage prefix keys
|
var/list/language_prefixes = list() //Kanguage prefix keys
|
||||||
@@ -293,11 +293,10 @@ datum/preferences
|
|||||||
|
|
||||||
if(icon_updates)
|
if(icon_updates)
|
||||||
character.force_update_limbs()
|
character.force_update_limbs()
|
||||||
character.update_mutations(0)
|
character.update_icons_body()
|
||||||
character.update_underwear(0)
|
character.update_mutations()
|
||||||
character.update_hair(0)
|
character.update_underwear()
|
||||||
character.update_eyes(0)
|
character.update_hair()
|
||||||
character.update_icons_all()
|
|
||||||
|
|
||||||
/datum/preferences/proc/open_load_dialog(mob/user)
|
/datum/preferences/proc/open_load_dialog(mob/user)
|
||||||
var/dat = "<body>"
|
var/dat = "<body>"
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
*/
|
*/
|
||||||
var/list/sprite_sheets_refit = null
|
var/list/sprite_sheets_refit = null
|
||||||
var/ear_protection = 0
|
var/ear_protection = 0
|
||||||
|
var/blood_sprite_state
|
||||||
|
|
||||||
//Updates the icons of the mob wearing the clothing item, if any.
|
//Updates the icons of the mob wearing the clothing item, if any.
|
||||||
/obj/item/clothing/proc/update_clothing_icon()
|
/obj/item/clothing/proc/update_clothing_icon()
|
||||||
@@ -83,16 +84,14 @@
|
|||||||
|
|
||||||
//Set species_restricted list
|
//Set species_restricted list
|
||||||
switch(target_species)
|
switch(target_species)
|
||||||
if("Human", "Skrell") //humanoid bodytypes
|
if(SPECIES_HUMAN, SPECIES_SKRELL) //humanoid bodytypes
|
||||||
species_restricted = list("Human", "Skrell", "Promethean") //skrell/humans can wear each other's suits
|
species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_PROMETHEAN) //skrell/humans can wear each other's suits
|
||||||
else
|
else
|
||||||
species_restricted = list(target_species)
|
species_restricted = list(target_species)
|
||||||
|
|
||||||
//Set icon
|
//Set icon
|
||||||
if (sprite_sheets_refit && (target_species in sprite_sheets_refit))
|
if (sprite_sheets_refit && (target_species in sprite_sheets_refit))
|
||||||
icon_override = sprite_sheets_refit[target_species]
|
sprite_sheets[target_species] = sprite_sheets_refit[target_species]
|
||||||
else
|
|
||||||
icon_override = initial(icon_override)
|
|
||||||
|
|
||||||
if (sprite_sheets_obj && (target_species in sprite_sheets_obj))
|
if (sprite_sheets_obj && (target_species in sprite_sheets_obj))
|
||||||
icon = sprite_sheets_obj[target_species]
|
icon = sprite_sheets_obj[target_species]
|
||||||
@@ -105,17 +104,15 @@
|
|||||||
|
|
||||||
//Set species_restricted list
|
//Set species_restricted list
|
||||||
switch(target_species)
|
switch(target_species)
|
||||||
if("Skrell")
|
if(SPECIES_SKRELL)
|
||||||
species_restricted = list("Human", "Skrell", "Promethean") //skrell helmets fit humans too
|
species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_PROMETHEAN) //skrell helmets fit humans too
|
||||||
|
|
||||||
else
|
else
|
||||||
species_restricted = list(target_species)
|
species_restricted = list(target_species)
|
||||||
|
|
||||||
//Set icon
|
//Set icon
|
||||||
if (sprite_sheets_refit && (target_species in sprite_sheets_refit))
|
if (sprite_sheets_refit && (target_species in sprite_sheets_refit))
|
||||||
icon_override = sprite_sheets_refit[target_species]
|
sprite_sheets[target_species] = sprite_sheets_refit[target_species]
|
||||||
else
|
|
||||||
icon_override = initial(icon_override)
|
|
||||||
|
|
||||||
if (sprite_sheets_obj && (target_species in sprite_sheets_obj))
|
if (sprite_sheets_obj && (target_species in sprite_sheets_obj))
|
||||||
icon = sprite_sheets_obj[target_species]
|
icon = sprite_sheets_obj[target_species]
|
||||||
@@ -130,7 +127,7 @@
|
|||||||
throwforce = 2
|
throwforce = 2
|
||||||
slot_flags = SLOT_EARS
|
slot_flags = SLOT_EARS
|
||||||
sprite_sheets = list(
|
sprite_sheets = list(
|
||||||
"Teshari" = 'icons/mob/species/seromi/ears.dmi')
|
SPECIES_TESHARI = 'icons/mob/species/seromi/ears.dmi')
|
||||||
|
|
||||||
/obj/item/clothing/ears/attack_hand(mob/user as mob)
|
/obj/item/clothing/ears/attack_hand(mob/user as mob)
|
||||||
if (!user) return
|
if (!user) return
|
||||||
@@ -197,6 +194,7 @@
|
|||||||
w_class = ITEMSIZE_SMALL
|
w_class = ITEMSIZE_SMALL
|
||||||
icon = 'icons/obj/clothing/gloves.dmi'
|
icon = 'icons/obj/clothing/gloves.dmi'
|
||||||
siemens_coefficient = 0.9
|
siemens_coefficient = 0.9
|
||||||
|
blood_sprite_state = "bloodyhands"
|
||||||
var/wired = 0
|
var/wired = 0
|
||||||
var/obj/item/weapon/cell/cell = 0
|
var/obj/item/weapon/cell/cell = 0
|
||||||
var/fingerprint_chance = 0 //How likely the glove is to let fingerprints through
|
var/fingerprint_chance = 0 //How likely the glove is to let fingerprints through
|
||||||
@@ -210,8 +208,8 @@
|
|||||||
slot_flags = SLOT_GLOVES
|
slot_flags = SLOT_GLOVES
|
||||||
attack_verb = list("challenged")
|
attack_verb = list("challenged")
|
||||||
sprite_sheets = list(
|
sprite_sheets = list(
|
||||||
"Teshari" = 'icons/mob/species/seromi/gloves.dmi',
|
SPECIES_TESHARI = 'icons/mob/species/seromi/gloves.dmi',
|
||||||
"Vox" = 'icons/mob/species/vox/gloves.dmi'
|
SPECIES_VOX = 'icons/mob/species/vox/gloves.dmi'
|
||||||
)
|
)
|
||||||
|
|
||||||
/obj/item/clothing/gloves/update_clothing_icon()
|
/obj/item/clothing/gloves/update_clothing_icon()
|
||||||
@@ -244,8 +242,8 @@
|
|||||||
name = "modified [name]"
|
name = "modified [name]"
|
||||||
desc = "[desc]<br>They have had the fingertips cut off of them."
|
desc = "[desc]<br>They have had the fingertips cut off of them."
|
||||||
if("exclude" in species_restricted)
|
if("exclude" in species_restricted)
|
||||||
species_restricted -= "Unathi"
|
species_restricted -= SPECIES_UNATHI
|
||||||
species_restricted -= "Tajara"
|
species_restricted -= SPECIES_TAJ
|
||||||
return
|
return
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -300,7 +298,7 @@
|
|||||||
w_class = ITEMSIZE_TINY
|
w_class = ITEMSIZE_TINY
|
||||||
icon = 'icons/obj/clothing/rings.dmi'
|
icon = 'icons/obj/clothing/rings.dmi'
|
||||||
gender = NEUTER
|
gender = NEUTER
|
||||||
species_restricted = list("exclude", "Diona")
|
species_restricted = list("exclude", SPECIES_DIONA)
|
||||||
siemens_coefficient = 1
|
siemens_coefficient = 1
|
||||||
glove_level = 1
|
glove_level = 1
|
||||||
fingerprint_chance = 100
|
fingerprint_chance = 100
|
||||||
@@ -318,15 +316,17 @@
|
|||||||
body_parts_covered = HEAD
|
body_parts_covered = HEAD
|
||||||
slot_flags = SLOT_HEAD
|
slot_flags = SLOT_HEAD
|
||||||
w_class = ITEMSIZE_SMALL
|
w_class = ITEMSIZE_SMALL
|
||||||
|
blood_sprite_state = "helmetblood"
|
||||||
|
|
||||||
var/light_overlay = "helmet_light"
|
var/light_overlay = "helmet_light"
|
||||||
var/light_applied
|
var/light_applied
|
||||||
var/brightness_on
|
var/brightness_on
|
||||||
var/on = 0
|
var/on = 0
|
||||||
|
var/image/helmet_light
|
||||||
|
|
||||||
sprite_sheets = list(
|
sprite_sheets = list(
|
||||||
"Teshari" = 'icons/mob/species/seromi/head.dmi',
|
SPECIES_TESHARI = 'icons/mob/species/seromi/head.dmi',
|
||||||
"Vox" = 'icons/mob/species/vox/head.dmi'
|
SPECIES_VOX = 'icons/mob/species/vox/head.dmi'
|
||||||
)
|
)
|
||||||
|
|
||||||
/obj/item/clothing/head/attack_self(mob/user)
|
/obj/item/clothing/head/attack_self(mob/user)
|
||||||
@@ -386,29 +386,29 @@
|
|||||||
return 1
|
return 1
|
||||||
|
|
||||||
/obj/item/clothing/head/update_icon(var/mob/user)
|
/obj/item/clothing/head/update_icon(var/mob/user)
|
||||||
|
|
||||||
overlays.Cut()
|
|
||||||
var/mob/living/carbon/human/H
|
var/mob/living/carbon/human/H
|
||||||
if(istype(user,/mob/living/carbon/human))
|
if(ishuman(user))
|
||||||
H = user
|
H = user
|
||||||
|
|
||||||
if(on)
|
if(on)
|
||||||
|
|
||||||
// Generate object icon.
|
// Generate object icon.
|
||||||
if(!light_overlay_cache["[light_overlay]_icon"])
|
if(!light_overlay_cache["[light_overlay]_icon"])
|
||||||
light_overlay_cache["[light_overlay]_icon"] = image("icon" = 'icons/obj/light_overlays.dmi', "icon_state" = "[light_overlay]")
|
light_overlay_cache["[light_overlay]_icon"] = image(icon = 'icons/obj/light_overlays.dmi', icon_state = "[light_overlay]")
|
||||||
overlays |= light_overlay_cache["[light_overlay]_icon"]
|
helmet_light = light_overlay_cache["[light_overlay]_icon"]
|
||||||
|
add_overlay(helmet_light)
|
||||||
|
|
||||||
// Generate and cache the on-mob icon, which is used in update_inv_head().
|
// Generate and cache the on-mob icon, which is used in update_inv_head().
|
||||||
var/cache_key = "[light_overlay][H ? "_[H.species.get_bodytype(H)]" : ""]"
|
var/body_type = (H && H.species.get_bodytype(H))
|
||||||
|
var/cache_key = "[light_overlay][body_type && sprite_sheets[body_type] ? "_[body_type]" : ""]"
|
||||||
if(!light_overlay_cache[cache_key])
|
if(!light_overlay_cache[cache_key])
|
||||||
var/use_icon = 'icons/mob/light_overlays.dmi'
|
var/use_icon = LAZYACCESS(sprite_sheets,body_type) || 'icons/mob/light_overlays.dmi'
|
||||||
if(H && sprite_sheets[H.species.get_bodytype(H)])
|
light_overlay_cache[cache_key] = image(icon = use_icon, icon_state = "[light_overlay]")
|
||||||
use_icon = sprite_sheets[H.species.get_bodytype(H)]
|
|
||||||
light_overlay_cache[cache_key] = image("icon" = use_icon, "icon_state" = "[light_overlay]")
|
|
||||||
|
|
||||||
if(H)
|
else if(helmet_light)
|
||||||
H.update_inv_head()
|
cut_overlay(helmet_light)
|
||||||
|
helmet_light = null
|
||||||
|
|
||||||
|
user.update_inv_head() //Will redraw the helmet with the light on the mob
|
||||||
|
|
||||||
/obj/item/clothing/head/update_clothing_icon()
|
/obj/item/clothing/head/update_clothing_icon()
|
||||||
if (ismob(src.loc))
|
if (ismob(src.loc))
|
||||||
@@ -427,11 +427,12 @@
|
|||||||
body_parts_covered = HEAD
|
body_parts_covered = HEAD
|
||||||
slot_flags = SLOT_MASK
|
slot_flags = SLOT_MASK
|
||||||
body_parts_covered = FACE|EYES
|
body_parts_covered = FACE|EYES
|
||||||
|
blood_sprite_state = "maskblood"
|
||||||
sprite_sheets = list(
|
sprite_sheets = list(
|
||||||
"Teshari" = 'icons/mob/species/seromi/masks.dmi',
|
SPECIES_TESHARI = 'icons/mob/species/seromi/masks.dmi',
|
||||||
"Vox" = 'icons/mob/species/vox/masks.dmi',
|
SPECIES_VOX = 'icons/mob/species/vox/masks.dmi',
|
||||||
"Tajara" = 'icons/mob/species/tajaran/mask.dmi',
|
SPECIES_TAJ = 'icons/mob/species/tajaran/mask.dmi',
|
||||||
"Unathi" = 'icons/mob/species/unathi/mask.dmi'
|
SPECIES_UNATHI = 'icons/mob/species/unathi/mask.dmi'
|
||||||
)
|
)
|
||||||
|
|
||||||
var/voicechange = 0
|
var/voicechange = 0
|
||||||
@@ -460,6 +461,7 @@
|
|||||||
siemens_coefficient = 0.9
|
siemens_coefficient = 0.9
|
||||||
body_parts_covered = FEET
|
body_parts_covered = FEET
|
||||||
slot_flags = SLOT_FEET
|
slot_flags = SLOT_FEET
|
||||||
|
blood_sprite_state = "shoeblood"
|
||||||
|
|
||||||
var/can_hold_knife = 0
|
var/can_hold_knife = 0
|
||||||
var/obj/item/holding
|
var/obj/item/holding
|
||||||
@@ -475,10 +477,10 @@
|
|||||||
slowdown = SHOES_SLOWDOWN
|
slowdown = SHOES_SLOWDOWN
|
||||||
force = 2
|
force = 2
|
||||||
var/overshoes = 0
|
var/overshoes = 0
|
||||||
species_restricted = list("exclude","Teshari", "Vox")
|
species_restricted = list("exclude",SPECIES_TESHARI, SPECIES_VOX)
|
||||||
sprite_sheets = list(
|
sprite_sheets = list(
|
||||||
"Teshari" = 'icons/mob/species/seromi/shoes.dmi',
|
SPECIES_TESHARI = 'icons/mob/species/seromi/shoes.dmi',
|
||||||
"Vox" = 'icons/mob/species/vox/shoes.dmi'
|
SPECIES_VOX = 'icons/mob/species/vox/shoes.dmi'
|
||||||
)
|
)
|
||||||
|
|
||||||
/obj/item/clothing/shoes/proc/draw_knife()
|
/obj/item/clothing/shoes/proc/draw_knife()
|
||||||
@@ -581,9 +583,10 @@
|
|||||||
w_class = ITEMSIZE_NORMAL
|
w_class = ITEMSIZE_NORMAL
|
||||||
preserve_item = 1
|
preserve_item = 1
|
||||||
|
|
||||||
|
|
||||||
sprite_sheets = list(
|
sprite_sheets = list(
|
||||||
"Teshari" = 'icons/mob/species/seromi/suit.dmi',
|
SPECIES_TESHARI = 'icons/mob/species/seromi/suit.dmi',
|
||||||
"Vox" = 'icons/mob/species/vox/suit.dmi'
|
SPECIES_VOX = 'icons/mob/species/vox/suit.dmi'
|
||||||
)
|
)
|
||||||
|
|
||||||
valid_accessory_slots = list("over", "armband")
|
valid_accessory_slots = list("over", "armband")
|
||||||
@@ -609,6 +612,7 @@
|
|||||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||||
w_class = ITEMSIZE_NORMAL
|
w_class = ITEMSIZE_NORMAL
|
||||||
show_messages = 1
|
show_messages = 1
|
||||||
|
blood_sprite_state = "uniformblood"
|
||||||
|
|
||||||
var/has_sensor = 1 //For the crew computer 2 = unable to change mode
|
var/has_sensor = 1 //For the crew computer 2 = unable to change mode
|
||||||
var/sensor_mode = 0
|
var/sensor_mode = 0
|
||||||
@@ -621,8 +625,8 @@
|
|||||||
var/rolled_down = -1 //0 = unrolled, 1 = rolled, -1 = cannot be toggled
|
var/rolled_down = -1 //0 = unrolled, 1 = rolled, -1 = cannot be toggled
|
||||||
var/rolled_sleeves = -1 //0 = unrolled, 1 = rolled, -1 = cannot be toggled
|
var/rolled_sleeves = -1 //0 = unrolled, 1 = rolled, -1 = cannot be toggled
|
||||||
sprite_sheets = list(
|
sprite_sheets = list(
|
||||||
"Teshari" = 'icons/mob/species/seromi/uniform.dmi',
|
SPECIES_TESHARI = 'icons/mob/species/seromi/uniform.dmi',
|
||||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
SPECIES_VOX = 'icons/mob/species/vox/uniform.dmi'
|
||||||
)
|
)
|
||||||
|
|
||||||
//convenience var for defining the icon state for the overlay used when the clothing is worn.
|
//convenience var for defining the icon state for the overlay used when the clothing is worn.
|
||||||
|
|||||||
34
code/modules/clothing/clothing_icons.dm
Normal file
34
code/modules/clothing/clothing_icons.dm
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
/obj/item/clothing/apply_accessories(var/image/standing)
|
||||||
|
if(LAZYLEN(accessories))
|
||||||
|
for(var/obj/item/clothing/accessory/A in accessories)
|
||||||
|
standing.add_overlay(A.get_mob_overlay())
|
||||||
|
|
||||||
|
/obj/item/clothing/apply_blood(var/image/standing)
|
||||||
|
if(blood_DNA && blood_sprite_state && ishuman(loc))
|
||||||
|
var/mob/living/carbon/human/H = loc
|
||||||
|
var/image/bloodsies = image(icon = H.species.get_blood_mask(H), icon_state = blood_sprite_state)
|
||||||
|
bloodsies.color = blood_color
|
||||||
|
standing.add_overlay(bloodsies)
|
||||||
|
|
||||||
|
//UNIFORM: Always appends "_s" to iconstate, stupidly.
|
||||||
|
/obj/item/clothing/under/get_worn_icon_state(var/slot_name)
|
||||||
|
var/state2use = ..()
|
||||||
|
state2use += "_s"
|
||||||
|
return state2use
|
||||||
|
|
||||||
|
//HELMET: May have a lighting overlay
|
||||||
|
/obj/item/clothing/head/make_worn_icon(var/body_type,var/slot_name,var/inhands,var/default_icon,var/default_layer = 0)
|
||||||
|
var/image/standing = ..()
|
||||||
|
if(on && slot_name == slot_head_str)
|
||||||
|
var/cache_key = "[light_overlay][LAZYACCESS(sprite_sheets,body_type) ? "_[body_type]" : ""]"
|
||||||
|
if(standing && light_overlay_cache[cache_key])
|
||||||
|
standing.add_overlay(light_overlay_cache[cache_key])
|
||||||
|
return standing
|
||||||
|
|
||||||
|
//SUIT: Blood state is slightly different
|
||||||
|
/obj/item/clothing/suit/apply_blood(var/image/standing)
|
||||||
|
if(blood_DNA && blood_sprite_state && ishuman(loc))
|
||||||
|
var/mob/living/carbon/human/H = loc
|
||||||
|
var/image/bloodsies = image(icon = H.species.get_blood_mask(H), icon_state = "[blood_overlay_type]blood")
|
||||||
|
bloodsies.color = blood_color
|
||||||
|
standing.add_overlay(bloodsies)
|
||||||
@@ -46,7 +46,7 @@
|
|||||||
icon = 'icons/obj/clothing/ears.dmi'
|
icon = 'icons/obj/clothing/ears.dmi'
|
||||||
w_class = ITEMSIZE_TINY
|
w_class = ITEMSIZE_TINY
|
||||||
slot_flags = SLOT_EARS
|
slot_flags = SLOT_EARS
|
||||||
species_restricted = list("Skrell")
|
species_restricted = list(SPECIES_SKRELL)
|
||||||
|
|
||||||
/obj/item/clothing/ears/skrell/chain
|
/obj/item/clothing/ears/skrell/chain
|
||||||
name = "Gold headtail chains"
|
name = "Gold headtail chains"
|
||||||
|
|||||||
@@ -10,8 +10,8 @@
|
|||||||
desc = "an ultra rare hat. It commands a certain respect."
|
desc = "an ultra rare hat. It commands a certain respect."
|
||||||
icon_state = "petehat"
|
icon_state = "petehat"
|
||||||
sprite_sheets = list(
|
sprite_sheets = list(
|
||||||
"Teshari" = 'icons/mob/species/seromi/head.dmi',
|
SPECIES_TESHARI = 'icons/mob/species/seromi/head.dmi',
|
||||||
"Vox" = 'icons/mob/species/vox/head.dmi'
|
SPECIES_VOX = 'icons/mob/species/vox/head.dmi'
|
||||||
)
|
)
|
||||||
|
|
||||||
/obj/item/clothing/head/collectable/slime
|
/obj/item/clothing/head/collectable/slime
|
||||||
|
|||||||
@@ -153,8 +153,8 @@
|
|||||||
icon_state = "swathelm"
|
icon_state = "swathelm"
|
||||||
item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat")
|
item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat")
|
||||||
sprite_sheets = list(
|
sprite_sheets = list(
|
||||||
"Tajara" = 'icons/mob/species/tajaran/helmet.dmi',
|
SPECIES_TAJ = 'icons/mob/species/tajaran/helmet.dmi',
|
||||||
"Unathi" = 'icons/mob/species/unathi/helmet.dmi',
|
SPECIES_UNATHI = 'icons/mob/species/unathi/helmet.dmi',
|
||||||
)
|
)
|
||||||
|
|
||||||
armor = list(melee = 60, bullet = 60, laser = 60, energy = 40, bomb = 40, bio = 0, rad = 0)
|
armor = list(melee = 60, bullet = 60, laser = 60, energy = 40, bomb = 40, bio = 0, rad = 0)
|
||||||
|
|||||||
@@ -59,7 +59,7 @@
|
|||||||
body_parts_covered = 0 //Hack to allow vox to eat while wearing this mask.
|
body_parts_covered = 0 //Hack to allow vox to eat while wearing this mask.
|
||||||
item_flags = BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT | PHORONGUARD
|
item_flags = BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT | PHORONGUARD
|
||||||
phoronproof = 1
|
phoronproof = 1
|
||||||
species_restricted = list("Vox")
|
species_restricted = list(SPECIES_VOX)
|
||||||
filtered_gases = list("oxygen", "sleeping_agent")
|
filtered_gases = list("oxygen", "sleeping_agent")
|
||||||
|
|
||||||
/obj/item/clothing/mask/gas/syndicate
|
/obj/item/clothing/mask/gas/syndicate
|
||||||
|
|||||||
@@ -88,7 +88,7 @@
|
|||||||
icon_state = "boots-vox"
|
icon_state = "boots-vox"
|
||||||
item_flags = PHORONGUARD
|
item_flags = PHORONGUARD
|
||||||
phoronproof = 1
|
phoronproof = 1
|
||||||
species_restricted = list("Vox")
|
species_restricted = list(SPECIES_VOX)
|
||||||
|
|
||||||
action_button_name = "Toggle the magclaws"
|
action_button_name = "Toggle the magclaws"
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
desc = "Smoothly contoured and polished to a shine. Still looks like a fishbowl."
|
desc = "Smoothly contoured and polished to a shine. Still looks like a fishbowl."
|
||||||
armor = list(melee = 20, bullet = 20, laser = 20, energy = 50, bomb = 50, bio = 100, rad = 50)
|
armor = list(melee = 20, bullet = 20, laser = 20, energy = 50, bomb = 50, bio = 100, rad = 50)
|
||||||
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
|
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||||
species_restricted = list("Skrell","Human")
|
species_restricted = list(SPECIES_SKRELL,SPECIES_HUMAN)
|
||||||
|
|
||||||
/obj/item/clothing/head/helmet/space/skrell/white
|
/obj/item/clothing/head/helmet/space/skrell/white
|
||||||
icon_state = "skrell_helmet_white"
|
icon_state = "skrell_helmet_white"
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/weapon/rcd)
|
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/weapon/rcd)
|
||||||
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||||
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
|
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||||
species_restricted = list("Skrell","Human")
|
species_restricted = list(SPECIES_SKRELL,SPECIES_HUMAN)
|
||||||
|
|
||||||
/obj/item/clothing/suit/space/skrell/white
|
/obj/item/clothing/suit/space/skrell/white
|
||||||
icon_state = "skrell_suit_white"
|
icon_state = "skrell_suit_white"
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
siemens_coefficient = 0.2
|
siemens_coefficient = 0.2
|
||||||
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||||
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
|
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||||
species_restricted = list("Vox")
|
species_restricted = list(SPECIES_VOX)
|
||||||
|
|
||||||
/obj/item/clothing/head/helmet/space/vox
|
/obj/item/clothing/head/helmet/space/vox
|
||||||
armor = list(melee = 60, bullet = 50, laser = 40, energy = 15, bomb = 30, bio = 100, rad = 50)
|
armor = list(melee = 60, bullet = 50, laser = 40, energy = 15, bomb = 30, bio = 100, rad = 50)
|
||||||
@@ -47,7 +47,7 @@
|
|||||||
item_flags = STOPPRESSUREDAMAGE | THICKMATERIAL | AIRTIGHT | PHORONGUARD
|
item_flags = STOPPRESSUREDAMAGE | THICKMATERIAL | AIRTIGHT | PHORONGUARD
|
||||||
flags_inv = 0
|
flags_inv = 0
|
||||||
phoronproof = 1
|
phoronproof = 1
|
||||||
species_restricted = list("Vox")
|
species_restricted = list(SPECIES_VOX)
|
||||||
|
|
||||||
/obj/item/clothing/head/helmet/space/vox/pressure
|
/obj/item/clothing/head/helmet/space/vox/pressure
|
||||||
name = "alien helmet"
|
name = "alien helmet"
|
||||||
|
|||||||
@@ -180,6 +180,15 @@
|
|||||||
spark_system = null
|
spark_system = null
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
|
/obj/item/weapon/rig/get_worn_icon_file(var/body_type,var/slot_name,var/default_icon,var/inhands)
|
||||||
|
if(!inhands && slot_name == slot_back_str)
|
||||||
|
if(icon_override)
|
||||||
|
return icon_override
|
||||||
|
else if(mob_icon)
|
||||||
|
return mob_icon
|
||||||
|
|
||||||
|
return ..()
|
||||||
|
|
||||||
/obj/item/weapon/rig/proc/suit_is_deployed()
|
/obj/item/weapon/rig/proc/suit_is_deployed()
|
||||||
if(!istype(wearer) || src.loc != wearer || wearer.back != src)
|
if(!istype(wearer) || src.loc != wearer || wearer.back != src)
|
||||||
return 0
|
return 0
|
||||||
@@ -331,7 +340,6 @@
|
|||||||
piece.item_flags &= ~(STOPPRESSUREDAMAGE|AIRTIGHT)
|
piece.item_flags &= ~(STOPPRESSUREDAMAGE|AIRTIGHT)
|
||||||
else
|
else
|
||||||
piece.item_flags |= (STOPPRESSUREDAMAGE|AIRTIGHT)
|
piece.item_flags |= (STOPPRESSUREDAMAGE|AIRTIGHT)
|
||||||
update_icon(1)
|
|
||||||
|
|
||||||
/obj/item/weapon/rig/ui_action_click()
|
/obj/item/weapon/rig/ui_action_click()
|
||||||
toggle_cooling(usr)
|
toggle_cooling(usr)
|
||||||
@@ -599,7 +607,7 @@
|
|||||||
// update_inv_wear_suit(), handle species checks here.
|
// update_inv_wear_suit(), handle species checks here.
|
||||||
if(wearer && sprite_sheets && sprite_sheets[wearer.species.get_bodytype(wearer)])
|
if(wearer && sprite_sheets && sprite_sheets[wearer.species.get_bodytype(wearer)])
|
||||||
species_icon = sprite_sheets[wearer.species.get_bodytype(wearer)]
|
species_icon = sprite_sheets[wearer.species.get_bodytype(wearer)]
|
||||||
mob_icon = image("icon" = species_icon, "icon_state" = "[icon_state]")
|
mob_icon = icon(icon = species_icon, icon_state = "[icon_state]")
|
||||||
|
|
||||||
if(installed_modules.len)
|
if(installed_modules.len)
|
||||||
for(var/obj/item/rig_module/module in installed_modules)
|
for(var/obj/item/rig_module/module in installed_modules)
|
||||||
|
|||||||
@@ -11,10 +11,10 @@
|
|||||||
cold_protection = HEAD|FACE|EYES
|
cold_protection = HEAD|FACE|EYES
|
||||||
brightness_on = 4
|
brightness_on = 4
|
||||||
sprite_sheets = list(
|
sprite_sheets = list(
|
||||||
"Tajara" = 'icons/mob/species/tajaran/helmet.dmi',
|
SPECIES_TAJ = 'icons/mob/species/tajaran/helmet.dmi',
|
||||||
"Skrell" = 'icons/mob/species/skrell/helmet.dmi',
|
SPECIES_SKRELL = 'icons/mob/species/skrell/helmet.dmi',
|
||||||
"Unathi" = 'icons/mob/species/unathi/helmet.dmi',
|
SPECIES_UNATHI = 'icons/mob/species/unathi/helmet.dmi',
|
||||||
"Vox" = 'icons/mob/species/vox/head.dmi'
|
SPECIES_VOX = 'icons/mob/species/vox/head.dmi'
|
||||||
)
|
)
|
||||||
species_restricted = null
|
species_restricted = null
|
||||||
|
|
||||||
@@ -50,9 +50,9 @@
|
|||||||
resilience = 0.2
|
resilience = 0.2
|
||||||
can_breach = 1
|
can_breach = 1
|
||||||
sprite_sheets = list(
|
sprite_sheets = list(
|
||||||
"Tajara" = 'icons/mob/species/tajaran/suit.dmi',
|
SPECIES_TAJ = 'icons/mob/species/tajaran/suit.dmi',
|
||||||
"Unathi" = 'icons/mob/species/unathi/suit.dmi',
|
SPECIES_UNATHI = 'icons/mob/species/unathi/suit.dmi',
|
||||||
"Vox" = 'icons/mob/species/vox/suit.dmi'
|
SPECIES_VOX = 'icons/mob/species/vox/suit.dmi'
|
||||||
)
|
)
|
||||||
supporting_limbs = list()
|
supporting_limbs = list()
|
||||||
var/obj/item/weapon/material/knife/tacknife
|
var/obj/item/weapon/material/knife/tacknife
|
||||||
|
|||||||
@@ -28,14 +28,14 @@
|
|||||||
siemens_coefficient = 0.2
|
siemens_coefficient = 0.2
|
||||||
|
|
||||||
/obj/item/clothing/head/helmet/space/rig/breacher
|
/obj/item/clothing/head/helmet/space/rig/breacher
|
||||||
species_restricted = list("Unathi")
|
species_restricted = list(SPECIES_UNATHI)
|
||||||
force = 5
|
force = 5
|
||||||
|
|
||||||
/obj/item/clothing/suit/space/rig/breacher
|
/obj/item/clothing/suit/space/rig/breacher
|
||||||
species_restricted = list("Unathi")
|
species_restricted = list(SPECIES_UNATHI)
|
||||||
|
|
||||||
/obj/item/clothing/shoes/magboots/rig/breacher
|
/obj/item/clothing/shoes/magboots/rig/breacher
|
||||||
species_restricted = list("Unathi")
|
species_restricted = list(SPECIES_UNATHI)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* VOX
|
* VOX
|
||||||
@@ -62,27 +62,27 @@
|
|||||||
glove_type = /obj/item/clothing/gloves/gauntlets/rig/vox
|
glove_type = /obj/item/clothing/gloves/gauntlets/rig/vox
|
||||||
|
|
||||||
/obj/item/clothing/head/helmet/space/rig/vox
|
/obj/item/clothing/head/helmet/space/rig/vox
|
||||||
species_restricted = list("Vox")
|
species_restricted = list(SPECIES_VOX)
|
||||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
|
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
|
||||||
phoronproof = 1
|
phoronproof = 1
|
||||||
|
|
||||||
/obj/item/clothing/shoes/magboots/rig/vox
|
/obj/item/clothing/shoes/magboots/rig/vox
|
||||||
name = "talons"
|
name = "talons"
|
||||||
species_restricted = list("Vox")
|
species_restricted = list(SPECIES_VOX)
|
||||||
sprite_sheets = list(
|
sprite_sheets = list(
|
||||||
"Vox" = 'icons/mob/species/vox/shoes.dmi'
|
SPECIES_VOX = 'icons/mob/species/vox/shoes.dmi'
|
||||||
)
|
)
|
||||||
phoronproof = 1
|
phoronproof = 1
|
||||||
|
|
||||||
/obj/item/clothing/suit/space/rig/vox
|
/obj/item/clothing/suit/space/rig/vox
|
||||||
species_restricted = list("Vox")
|
species_restricted = list(SPECIES_VOX)
|
||||||
phoronproof = 1
|
phoronproof = 1
|
||||||
|
|
||||||
/obj/item/clothing/gloves/gauntlets/rig/vox
|
/obj/item/clothing/gloves/gauntlets/rig/vox
|
||||||
siemens_coefficient = 0
|
siemens_coefficient = 0
|
||||||
species_restricted = list("Vox")
|
species_restricted = list(SPECIES_VOX)
|
||||||
sprite_sheets = list(
|
sprite_sheets = list(
|
||||||
"Vox" = 'icons/mob/species/vox/gloves.dmi'
|
SPECIES_VOX = 'icons/mob/species/vox/gloves.dmi'
|
||||||
)
|
)
|
||||||
phoronproof = 1
|
phoronproof = 1
|
||||||
|
|
||||||
|
|||||||
@@ -19,10 +19,11 @@
|
|||||||
light_overlay = "helmet_light_dual"
|
light_overlay = "helmet_light_dual"
|
||||||
camera_networks = list(NETWORK_SECURITY)
|
camera_networks = list(NETWORK_SECURITY)
|
||||||
|
|
||||||
|
//Internal Affairs suit
|
||||||
/obj/item/weapon/rig/internalaffairs
|
/obj/item/weapon/rig/internalaffairs
|
||||||
name = "augmented tie"
|
name = "augmented tie"
|
||||||
suit_type = "augmented suit"
|
suit_type = "augmented suit"
|
||||||
desc = "Prepare for paperwork."
|
desc = "The last suit you'll ever wear."
|
||||||
icon_state = "internalaffairs_rig"
|
icon_state = "internalaffairs_rig"
|
||||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||||
siemens_coefficient = 0.9
|
siemens_coefficient = 0.9
|
||||||
@@ -30,7 +31,13 @@
|
|||||||
offline_slowdown = 0
|
offline_slowdown = 0
|
||||||
offline_vision_restriction = 0
|
offline_vision_restriction = 0
|
||||||
|
|
||||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/briefcase,/obj/item/weapon/storage/secure/briefcase)
|
allowed = list(
|
||||||
|
/obj/item/device/flashlight,
|
||||||
|
/obj/item/weapon/tank,
|
||||||
|
/obj/item/device/suit_cooling_unit,
|
||||||
|
/obj/item/weapon/storage/briefcase,
|
||||||
|
/obj/item/weapon/storage/secure/briefcase
|
||||||
|
)
|
||||||
|
|
||||||
req_access = list()
|
req_access = list()
|
||||||
req_one_access = list()
|
req_one_access = list()
|
||||||
@@ -55,10 +62,11 @@
|
|||||||
helm_type = null
|
helm_type = null
|
||||||
boot_type = null
|
boot_type = null
|
||||||
|
|
||||||
|
//Mining suit
|
||||||
/obj/item/weapon/rig/industrial
|
/obj/item/weapon/rig/industrial
|
||||||
name = "industrial suit control module"
|
name = "industrial suit control module"
|
||||||
suit_type = "industrial hardsuit"
|
suit_type = "industrial hardsuit"
|
||||||
desc = "A heavy, powerful rig used by construction crews and mining corporations."
|
desc = "A heavy, powerful hardsuit used by construction crews and mining corporations."
|
||||||
icon_state = "engineering_rig"
|
icon_state = "engineering_rig"
|
||||||
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 100, rad = 50)
|
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 100, rad = 50)
|
||||||
slowdown = 1
|
slowdown = 1
|
||||||
@@ -69,7 +77,15 @@
|
|||||||
|
|
||||||
helm_type = /obj/item/clothing/head/helmet/space/rig/industrial
|
helm_type = /obj/item/clothing/head/helmet/space/rig/industrial
|
||||||
|
|
||||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/weapon/rcd)
|
allowed = list(
|
||||||
|
/obj/item/device/flashlight,
|
||||||
|
/obj/item/weapon/tank,
|
||||||
|
/obj/item/device/suit_cooling_unit,
|
||||||
|
/obj/item/weapon/storage/bag/ore,
|
||||||
|
/obj/item/device/t_scanner,
|
||||||
|
/obj/item/weapon/pickaxe,
|
||||||
|
/obj/item/weapon/rcd
|
||||||
|
)
|
||||||
|
|
||||||
req_access = list()
|
req_access = list()
|
||||||
req_one_access = list()
|
req_one_access = list()
|
||||||
@@ -84,10 +100,11 @@
|
|||||||
/obj/item/rig_module/vision/material,
|
/obj/item/rig_module/vision/material,
|
||||||
/obj/item/rig_module/maneuvering_jets) //VOREStation Edit - Added maneuvering jets
|
/obj/item/rig_module/maneuvering_jets) //VOREStation Edit - Added maneuvering jets
|
||||||
|
|
||||||
|
//Engineering suit
|
||||||
/obj/item/weapon/rig/eva
|
/obj/item/weapon/rig/eva
|
||||||
name = "EVA suit control module"
|
name = "EVA suit control module"
|
||||||
suit_type = "EVA hardsuit"
|
suit_type = "EVA hardsuit"
|
||||||
desc = "A light rig for repairs and maintenance to the outside of habitats and vessels."
|
desc = "A light hardsuit for repairs and maintenance to the outside of habitats and vessels."
|
||||||
icon_state = "eva_rig"
|
icon_state = "eva_rig"
|
||||||
armor = list(melee = 30, bullet = 10, laser = 20,energy = 25, bomb = 20, bio = 100, rad = 100)
|
armor = list(melee = 30, bullet = 10, laser = 20,energy = 25, bomb = 20, bio = 100, rad = 100)
|
||||||
slowdown = 0
|
slowdown = 0
|
||||||
@@ -98,7 +115,14 @@
|
|||||||
helm_type = /obj/item/clothing/head/helmet/space/rig/eva
|
helm_type = /obj/item/clothing/head/helmet/space/rig/eva
|
||||||
glove_type = /obj/item/clothing/gloves/gauntlets/rig/eva
|
glove_type = /obj/item/clothing/gloves/gauntlets/rig/eva
|
||||||
|
|
||||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/toolbox,/obj/item/weapon/storage/briefcase/inflatable,/obj/item/device/t_scanner,/obj/item/weapon/rcd)
|
allowed = list(
|
||||||
|
/obj/item/device/flashlight,
|
||||||
|
/obj/item/weapon/tank,
|
||||||
|
/obj/item/device/suit_cooling_unit,
|
||||||
|
/obj/item/weapon/storage/briefcase/inflatable,
|
||||||
|
/obj/item/device/t_scanner,
|
||||||
|
/obj/item/weapon/rcd
|
||||||
|
)
|
||||||
|
|
||||||
req_access = list()
|
req_access = list()
|
||||||
req_one_access = list()
|
req_one_access = list()
|
||||||
@@ -135,7 +159,14 @@
|
|||||||
helm_type = /obj/item/clothing/head/helmet/space/rig/ce
|
helm_type = /obj/item/clothing/head/helmet/space/rig/ce
|
||||||
glove_type = /obj/item/clothing/gloves/gauntlets/rig/ce
|
glove_type = /obj/item/clothing/gloves/gauntlets/rig/ce
|
||||||
|
|
||||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/weapon/rcd)
|
allowed = list(
|
||||||
|
/obj/item/device/flashlight,
|
||||||
|
/obj/item/weapon/tank,
|
||||||
|
/obj/item/device/suit_cooling_unit,
|
||||||
|
/obj/item/weapon/storage/briefcase/inflatable,
|
||||||
|
/obj/item/device/t_scanner,
|
||||||
|
/obj/item/weapon/rcd
|
||||||
|
)
|
||||||
|
|
||||||
req_access = list()
|
req_access = list()
|
||||||
req_one_access = list()
|
req_one_access = list()
|
||||||
@@ -157,6 +188,7 @@
|
|||||||
/obj/item/rig_module/vision/meson
|
/obj/item/rig_module/vision/meson
|
||||||
)
|
)
|
||||||
|
|
||||||
|
//Research Director's suit. Just add red crowbar.
|
||||||
/obj/item/weapon/rig/hazmat
|
/obj/item/weapon/rig/hazmat
|
||||||
|
|
||||||
name = "AMI control module"
|
name = "AMI control module"
|
||||||
@@ -170,7 +202,23 @@
|
|||||||
|
|
||||||
helm_type = /obj/item/clothing/head/helmet/space/rig/hazmat
|
helm_type = /obj/item/clothing/head/helmet/space/rig/hazmat
|
||||||
|
|
||||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/stack/flag,/obj/item/weapon/storage/excavation,/obj/item/weapon/pickaxe,/obj/item/device/healthanalyzer,/obj/item/device/measuring_tape,/obj/item/device/ano_scanner,/obj/item/device/depth_scanner,/obj/item/device/core_sampler,/obj/item/device/gps,/obj/item/device/beacon_locator,/obj/item/device/radio/beacon,/obj/item/weapon/pickaxe/hand,/obj/item/weapon/storage/bag/fossils)
|
allowed = list(
|
||||||
|
/obj/item/device/flashlight,
|
||||||
|
/obj/item/weapon/tank,
|
||||||
|
/obj/item/device/suit_cooling_unit,
|
||||||
|
/obj/item/stack/flag,
|
||||||
|
/obj/item/weapon/storage/excavation,
|
||||||
|
/obj/item/weapon/pickaxe,
|
||||||
|
/obj/item/device/healthanalyzer,
|
||||||
|
/obj/item/device/measuring_tape,
|
||||||
|
/obj/item/device/ano_scanner,
|
||||||
|
/obj/item/device/depth_scanner,
|
||||||
|
/obj/item/device/core_sampler,
|
||||||
|
/obj/item/device/gps,
|
||||||
|
/obj/item/device/beacon_locator,
|
||||||
|
/obj/item/device/radio/beacon,
|
||||||
|
/obj/item/weapon/pickaxe/hand,
|
||||||
|
/obj/item/weapon/storage/bag/fossils)
|
||||||
|
|
||||||
req_access = list()
|
req_access = list()
|
||||||
req_one_access = list()
|
req_one_access = list()
|
||||||
@@ -185,6 +233,7 @@
|
|||||||
/obj/item/rig_module/device/anomaly_scanner
|
/obj/item/rig_module/device/anomaly_scanner
|
||||||
)
|
)
|
||||||
|
|
||||||
|
//Paramedic suit
|
||||||
/obj/item/weapon/rig/medical
|
/obj/item/weapon/rig/medical
|
||||||
|
|
||||||
name = "rescue suit control module"
|
name = "rescue suit control module"
|
||||||
@@ -198,7 +247,15 @@
|
|||||||
|
|
||||||
helm_type = /obj/item/clothing/head/helmet/space/rig/medical
|
helm_type = /obj/item/clothing/head/helmet/space/rig/medical
|
||||||
|
|
||||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical,/obj/item/roller )
|
allowed = list(
|
||||||
|
/obj/item/device/flashlight,
|
||||||
|
/obj/item/weapon/tank,
|
||||||
|
/obj/item/device/suit_cooling_unit,
|
||||||
|
/obj/item/weapon/storage/firstaid,
|
||||||
|
/obj/item/device/healthanalyzer,
|
||||||
|
/obj/item/stack/medical,
|
||||||
|
/obj/item/roller
|
||||||
|
)
|
||||||
|
|
||||||
req_access = list()
|
req_access = list()
|
||||||
req_one_access = list()
|
req_one_access = list()
|
||||||
@@ -215,6 +272,7 @@
|
|||||||
/obj/item/rig_module/vision/medhud
|
/obj/item/rig_module/vision/medhud
|
||||||
)
|
)
|
||||||
|
|
||||||
|
//Security suit
|
||||||
/obj/item/weapon/rig/hazard
|
/obj/item/weapon/rig/hazard
|
||||||
name = "hazard hardsuit control module"
|
name = "hazard hardsuit control module"
|
||||||
suit_type = "hazard hardsuit"
|
suit_type = "hazard hardsuit"
|
||||||
@@ -228,7 +286,13 @@
|
|||||||
|
|
||||||
helm_type = /obj/item/clothing/head/helmet/space/rig/hazard
|
helm_type = /obj/item/clothing/head/helmet/space/rig/hazard
|
||||||
|
|
||||||
allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/melee/baton)
|
allowed = list(
|
||||||
|
/obj/item/weapon/gun,
|
||||||
|
/obj/item/device/flashlight,
|
||||||
|
/obj/item/weapon/tank,
|
||||||
|
/obj/item/device/suit_cooling_unit,
|
||||||
|
/obj/item/weapon/melee/baton
|
||||||
|
)
|
||||||
|
|
||||||
req_access = list()
|
req_access = list()
|
||||||
req_one_access = list()
|
req_one_access = list()
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
cold_protection = HEAD
|
cold_protection = HEAD
|
||||||
min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECTION_TEMPERATURE
|
min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECTION_TEMPERATURE
|
||||||
siemens_coefficient = 0.9
|
siemens_coefficient = 0.9
|
||||||
species_restricted = list("exclude","Diona")
|
species_restricted = list("exclude",SPECIES_DIONA)
|
||||||
preserve_item = 1
|
preserve_item = 1
|
||||||
phoronproof = 1
|
phoronproof = 1
|
||||||
flash_protection = FLASH_PROTECTION_MAJOR
|
flash_protection = FLASH_PROTECTION_MAJOR
|
||||||
@@ -62,7 +62,7 @@
|
|||||||
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
|
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
|
||||||
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
|
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
|
||||||
siemens_coefficient = 0.9
|
siemens_coefficient = 0.9
|
||||||
species_restricted = list("exclude","Diona")
|
species_restricted = list("exclude",SPECIES_DIONA)
|
||||||
preserve_item = 1
|
preserve_item = 1
|
||||||
phoronproof = 1
|
phoronproof = 1
|
||||||
|
|
||||||
|
|||||||
@@ -13,16 +13,16 @@
|
|||||||
//Species-specific stuff.
|
//Species-specific stuff.
|
||||||
species_restricted = list("Human", "Promethean")
|
species_restricted = list("Human", "Promethean")
|
||||||
sprite_sheets_refit = list(
|
sprite_sheets_refit = list(
|
||||||
"Unathi" = 'icons/mob/species/unathi/helmet.dmi',
|
SPECIES_UNATHI = 'icons/mob/species/unathi/helmet.dmi',
|
||||||
"Tajara" = 'icons/mob/species/tajaran/helmet.dmi',
|
SPECIES_TAJ = 'icons/mob/species/tajaran/helmet.dmi',
|
||||||
"Skrell" = 'icons/mob/species/skrell/helmet.dmi'
|
SPECIES_SKRELL = 'icons/mob/species/skrell/helmet.dmi'
|
||||||
//Teshari have a general sprite sheet defined in modules/clothing/clothing.dm
|
//Teshari have a general sprite sheet defined in modules/clothing/clothing.dm
|
||||||
)
|
)
|
||||||
sprite_sheets_obj = list(
|
sprite_sheets_obj = list(
|
||||||
"Unathi" = 'icons/obj/clothing/species/unathi/hats.dmi',
|
SPECIES_UNATHI = 'icons/obj/clothing/species/unathi/hats.dmi',
|
||||||
"Tajara" = 'icons/obj/clothing/species/tajaran/hats.dmi',
|
SPECIES_TAJ = 'icons/obj/clothing/species/tajaran/hats.dmi',
|
||||||
"Skrell" = 'icons/obj/clothing/species/skrell/hats.dmi',
|
SPECIES_SKRELL = 'icons/obj/clothing/species/skrell/hats.dmi',
|
||||||
"Teshari" = 'icons/obj/clothing/species/seromi/hats.dmi'
|
SPECIES_TESHARI = 'icons/obj/clothing/species/seromi/hats.dmi'
|
||||||
)
|
)
|
||||||
|
|
||||||
light_overlay = "helmet_light"
|
light_overlay = "helmet_light"
|
||||||
@@ -38,18 +38,18 @@
|
|||||||
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||||
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
|
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||||
|
|
||||||
species_restricted = list("Human", "Skrell", "Promethean")
|
species_restricted = list("Human", SPECIES_SKRELL, "Promethean")
|
||||||
sprite_sheets_refit = list(
|
sprite_sheets_refit = list(
|
||||||
"Unathi" = 'icons/mob/species/unathi/suit.dmi',
|
SPECIES_UNATHI = 'icons/mob/species/unathi/suit.dmi',
|
||||||
"Tajara" = 'icons/mob/species/tajaran/suit.dmi',
|
SPECIES_TAJ = 'icons/mob/species/tajaran/suit.dmi',
|
||||||
"Skrell" = 'icons/mob/species/skrell/suit.dmi'
|
SPECIES_SKRELL = 'icons/mob/species/skrell/suit.dmi'
|
||||||
//Teshari have a general sprite sheet defined in modules/clothing/clothing.dm
|
//Teshari have a general sprite sheet defined in modules/clothing/clothing.dm
|
||||||
)
|
)
|
||||||
sprite_sheets_obj = list(
|
sprite_sheets_obj = list(
|
||||||
"Unathi" = 'icons/obj/clothing/species/unathi/suits.dmi',
|
SPECIES_UNATHI = 'icons/obj/clothing/species/unathi/suits.dmi',
|
||||||
"Tajara" = 'icons/obj/clothing/species/tajaran/suits.dmi',
|
SPECIES_TAJ = 'icons/obj/clothing/species/tajaran/suits.dmi',
|
||||||
"Skrell" = 'icons/obj/clothing/species/skrell/suits.dmi',
|
SPECIES_SKRELL = 'icons/obj/clothing/species/skrell/suits.dmi',
|
||||||
"Teshari" = 'icons/obj/clothing/species/seromi/suits.dmi'
|
SPECIES_TESHARI = 'icons/obj/clothing/species/seromi/suits.dmi'
|
||||||
)
|
)
|
||||||
|
|
||||||
//Breach thresholds, should ideally be inherited by most (if not all) voidsuits.
|
//Breach thresholds, should ideally be inherited by most (if not all) voidsuits.
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
icon_override = 'icons/mob/species/seromi/teshari_cloak.dmi'
|
icon_override = 'icons/mob/species/seromi/teshari_cloak.dmi'
|
||||||
icon_state = "tesh_cloak_bo"
|
icon_state = "tesh_cloak_bo"
|
||||||
item_state = "tesh_cloak_bo"
|
item_state = "tesh_cloak_bo"
|
||||||
species_restricted = list("Teshari")
|
species_restricted = list(SPECIES_TESHARI)
|
||||||
body_parts_covered = UPPER_TORSO|ARMS
|
body_parts_covered = UPPER_TORSO|ARMS
|
||||||
|
|
||||||
/obj/item/clothing/suit/storage/seromi/cloak/black_orange
|
/obj/item/clothing/suit/storage/seromi/cloak/black_orange
|
||||||
|
|||||||
@@ -6,5 +6,5 @@
|
|||||||
icon_state = "vox-scrap"
|
icon_state = "vox-scrap"
|
||||||
icon_state = "vox-scrap"
|
icon_state = "vox-scrap"
|
||||||
body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS
|
body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS
|
||||||
species_restricted = list("Vox")
|
species_restricted = list(SPECIES_VOX)
|
||||||
siemens_coefficient = 1 //Its literally metal
|
siemens_coefficient = 1 //Its literally metal
|
||||||
@@ -265,6 +265,15 @@
|
|||||||
return
|
return
|
||||||
..()
|
..()
|
||||||
|
|
||||||
|
/obj/item/clothing/suit/straight_jacket/equipped(var/mob/living/user,var/slot)
|
||||||
|
. = ..()
|
||||||
|
if(slot == slot_wear_suit)
|
||||||
|
user.drop_l_hand()
|
||||||
|
user.drop_r_hand()
|
||||||
|
if(ishuman(user))
|
||||||
|
var/mob/living/carbon/human/H = user
|
||||||
|
H.drop_from_inventory(H.handcuffed)
|
||||||
|
|
||||||
/obj/item/clothing/suit/ianshirt
|
/obj/item/clothing/suit/ianshirt
|
||||||
name = "worn shirt"
|
name = "worn shirt"
|
||||||
desc = "A worn out, curiously comfortable t-shirt with a picture of Ian. You wouldn't go so far as to say it feels like being hugged when you wear it but it's pretty close. Good for sleeping in."
|
desc = "A worn out, curiously comfortable t-shirt with a picture of Ian. You wouldn't go so far as to say it feels like being hugged when you wear it but it's pretty close. Good for sleeping in."
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
var/concealed_holster = 0
|
var/concealed_holster = 0
|
||||||
var/mob/living/carbon/human/wearer = null //To check if the wearer changes, so species spritesheets change properly.
|
var/mob/living/carbon/human/wearer = null //To check if the wearer changes, so species spritesheets change properly.
|
||||||
|
|
||||||
sprite_sheets = list("Teshari" = 'icons/mob/species/seromi/ties.dmi') //Teshari can into webbing, too!
|
sprite_sheets = list(SPECIES_TESHARI = 'icons/mob/species/seromi/ties.dmi') //Teshari can into webbing, too!
|
||||||
|
|
||||||
/obj/item/clothing/accessory/Destroy()
|
/obj/item/clothing/accessory/Destroy()
|
||||||
on_removed()
|
on_removed()
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/obj/item/clothing/under/seromi
|
/obj/item/clothing/under/seromi
|
||||||
icon = 'icons/obj/clothing/species/seromi/uniform.dmi'
|
icon = 'icons/obj/clothing/species/seromi/uniform.dmi'
|
||||||
icon_state = "seromi_grey"
|
icon_state = "seromi_grey"
|
||||||
species_restricted = list("Teshari")
|
species_restricted = list(SPECIES_TESHARI)
|
||||||
|
|
||||||
/obj/item/clothing/under/seromi/smock
|
/obj/item/clothing/under/seromi/smock
|
||||||
name = "small grey smock"
|
name = "small grey smock"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/obj/item/clothing/under/vox
|
/obj/item/clothing/under/vox
|
||||||
has_sensor = 0
|
has_sensor = 0
|
||||||
species_restricted = list("Vox")
|
species_restricted = list(SPECIES_VOX)
|
||||||
valid_accessory_slots = list("vox")
|
valid_accessory_slots = list("vox")
|
||||||
restricted_accessory_slots = list("vox")
|
restricted_accessory_slots = list("vox")
|
||||||
phoronproof = 1
|
phoronproof = 1
|
||||||
|
|||||||
@@ -2,5 +2,5 @@
|
|||||||
var/datum/supply_order/O = new /datum/supply_order()
|
var/datum/supply_order/O = new /datum/supply_order()
|
||||||
O.ordernum = supply_controller.ordernum
|
O.ordernum = supply_controller.ordernum
|
||||||
O.object = supply_controller.supply_packs[pick(supply_controller.supply_packs)]
|
O.object = supply_controller.supply_packs[pick(supply_controller.supply_packs)]
|
||||||
O.orderedby = random_name(pick(MALE,FEMALE), species = "Human")
|
O.orderedby = random_name(pick(MALE,FEMALE), species = SPECIES_HUMAN)
|
||||||
supply_controller.shoppinglist += O
|
supply_controller.shoppinglist += O
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
return // VOREStation Edit - Can't exploit shell if we never call shell!
|
return // VOREStation Edit - Can't exploit shell if we never call shell!
|
||||||
if (config.use_irc_bot)
|
if (config.use_irc_bot)
|
||||||
if (config.use_node_bot)
|
if (config.use_node_bot)
|
||||||
shell("node bridge.js -h \"[config.irc_bot_host]\" -p \"[config.irc_bot_port]\" -c \"[channel]\" -m \"[msg]\"")
|
shell("node bridge.js -h \"[config.irc_bot_host]\" -p \"[config.irc_bot_port]\" -c \"[channel]\" -m \"[escape_shell_arg(msg)]\"")
|
||||||
else
|
else
|
||||||
if (config.irc_bot_host)
|
if (config.irc_bot_host)
|
||||||
if(config.irc_bot_export)
|
if(config.irc_bot_export)
|
||||||
@@ -17,10 +17,10 @@
|
|||||||
nudge_lib = "lib/nudge.so"
|
nudge_lib = "lib/nudge.so"
|
||||||
|
|
||||||
spawn(0)
|
spawn(0)
|
||||||
call(nudge_lib, "nudge")("[config.comms_password]","[config.irc_bot_host]","[channel]","[msg]")
|
call(nudge_lib, "nudge")("[config.comms_password]","[config.irc_bot_host]","[channel]","[escape_shell_arg(msg)]")
|
||||||
else
|
else
|
||||||
spawn(0)
|
spawn(0)
|
||||||
ext_python("ircbot_message.py", "[config.comms_password] [config.irc_bot_host] [channel] [msg]")
|
ext_python("ircbot_message.py", "[config.comms_password] [config.irc_bot_host] [channel] [escape_shell_arg(msg)]")
|
||||||
return
|
return
|
||||||
|
|
||||||
/proc/send2mainirc(var/msg)
|
/proc/send2mainirc(var/msg)
|
||||||
|
|||||||
@@ -1,10 +1,28 @@
|
|||||||
|
// Ported from /vg/.
|
||||||
|
/proc/escape_shell_arg(var/arg)
|
||||||
|
// RCE prevention
|
||||||
|
// - Encloses arg in single quotes
|
||||||
|
// - Escapes single quotes
|
||||||
|
// Also escapes %, ! on windows
|
||||||
|
if(world.system_type == MS_WINDOWS)
|
||||||
|
arg = replacetext(arg, "^", "^^") // Escape char
|
||||||
|
arg = replacetext(arg, "%", "%%") // %PATH% -> %%PATH%%
|
||||||
|
arg = replacetext(arg, "!", "^!") // !PATH!, delayed variable expansion on Windows
|
||||||
|
arg = replacetext(arg, "\"", "^\"")
|
||||||
|
arg = "\"[arg]\""
|
||||||
|
else
|
||||||
|
arg = replacetext(arg, "\\", "\\\\'") // Escape char
|
||||||
|
arg = replacetext(arg, "'", "\\'") // No breaking out of the single quotes.
|
||||||
|
arg = "'[arg]'"
|
||||||
|
return arg
|
||||||
|
|
||||||
/proc/ext_python(var/script, var/args, var/scriptsprefix = 1)
|
/proc/ext_python(var/script, var/args, var/scriptsprefix = 1)
|
||||||
return // VOREStation Edit - Can't exploit shell if we never call shell!
|
return // VOREStation Edit - Can't exploit shell if we never call shell!
|
||||||
if(scriptsprefix) script = "scripts/" + script
|
if(scriptsprefix)
|
||||||
|
script = "scripts/" + script
|
||||||
|
|
||||||
if(world.system_type == MS_WINDOWS)
|
if(world.system_type == MS_WINDOWS)
|
||||||
script = replacetext(script, "/", "\\")
|
script = replacetext(script, "/", "\\")
|
||||||
|
|
||||||
var/command = config.python_path + " " + script + " " + args
|
var/command = config.python_path + " " + script + " " + args
|
||||||
|
return shell(command)
|
||||||
return shell(command)
|
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
"_____ used ____ to create their newest invention, _____!",
|
"_____ used ____ to create their newest invention, _____!",
|
||||||
"Scientists are not allowed to make Gatling _____.",
|
"Scientists are not allowed to make Gatling _____.",
|
||||||
"It's not a party until the ____ arrive.",
|
"It's not a party until the ____ arrive.",
|
||||||
"No matter how many Tajara you have, _____ is never acceptable.",
|
"No matter how many Tajaran you have, _____ is never acceptable.",
|
||||||
"No, the AI's first law is NOT to serve _____.",
|
"No, the AI's first law is NOT to serve _____.",
|
||||||
"The robots are not disposal bins for your _____.",
|
"The robots are not disposal bins for your _____.",
|
||||||
"You can never have too many _____ on shift.",
|
"You can never have too many _____ on shift.",
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user