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:
Leshana
2018-03-15 22:41:14 -04:00
242 changed files with 21216 additions and 547364 deletions
+1 -1
View File
@@ -46,7 +46,7 @@
return TRUE
/atom/movable/Destroy()
unbuckle_mob()
unbuckle_all_mobs()
return ..()
@@ -96,18 +96,18 @@ var/global/list/image/splatter_cache=list()
S.overlays.Cut()
S.overlays += S.blood_overlay
S.blood_DNA |= blood_DNA.Copy()
perp.update_inv_shoes()
else if (hasfeet)//Or feet
perp.feet_blood_color = basecolor
perp.track_blood = max(amount,perp.track_blood)
if(!perp.feet_blood_DNA)
perp.feet_blood_DNA = list()
LAZYINITLIST(perp.feet_blood_DNA)
perp.feet_blood_DNA |= blood_DNA.Copy()
perp.update_bloodied()
else if (perp.buckled && istype(perp.buckled, /obj/structure/bed/chair/wheelchair))
var/obj/structure/bed/chair/wheelchair/W = perp.buckled
W.bloodiness = 4
perp.update_inv_shoes(1)
amount--
/obj/effect/decal/cleanable/blood/proc/dry()
@@ -217,7 +217,7 @@
/datum/poster/bay_44
icon_state="bsposter44"
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
icon_state="bsposter45"
+118 -2
View File
@@ -69,7 +69,7 @@
/* Species-specific sprites, concept stolen from Paradise//vg/.
ex:
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.
*/
@@ -84,6 +84,9 @@
var/reach = 1 // Length of tiles it can reach, 1 is adjacent.
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()
..()
if(embed_chance < 0)
@@ -280,6 +283,7 @@
// note this isn't called during the initial dressing of a player
/obj/item/proc/equipped(var/mob/user, var/slot)
hud_layerise()
user.position_hud_item(src,slot)
if(user.client) user.client.screen |= src
if(user.pulling == src) user.stop_pulling()
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.
/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
+1 -1
View File
@@ -11,7 +11,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
item_state = "electronic"
w_class = ITEMSIZE_SMALL
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
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"])
//Weather reports.
for(var/datum/planet/planet in planet_controller.planets)
if(planet.weather_holder && planet.weather_holder.current_weather)
var/list/W = list(
"Planet" = planet.name,
"Time" = planet.current_time.show_time("hh:mm"),
"Weather" = planet.weather_holder.current_weather.name,
"Temperature" = planet.weather_holder.temperature - T0C,
"High" = planet.weather_holder.current_weather.temp_high - T0C,
"Low" = planet.weather_holder.current_weather.temp_low - T0C)
weather[++weather.len] = W
if(planet_controller)
for(var/datum/planet/planet in planet_controller.planets)
if(planet.weather_holder && planet.weather_holder.current_weather)
var/list/W = list(
"Planet" = planet.name,
"Time" = planet.current_time.show_time("hh:mm"),
"Weather" = planet.weather_holder.current_weather.name,
"Temperature" = planet.weather_holder.temperature - T0C,
"High" = planet.weather_holder.current_weather.temp_high - T0C,
"Low" = planet.weather_holder.current_weather.temp_low - T0C)
weather[++weather.len] = W
injection = "<div>Test</div>"
@@ -251,4 +252,4 @@
set_light(fon * flum)
nanomanager.update_uis(src)
add_fingerprint(usr)
add_fingerprint(usr)
-1
View File
@@ -487,7 +487,6 @@
M.timeofdeath = 0
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.reload_fullscreen()
+2 -2
View File
@@ -7,7 +7,7 @@
desc = "A kit containing all the needed tools and parts to modify a hardsuit for another user."
icon_state = "modkit"
var/parts = MODKIT_FULL
var/target_species = "Human"
var/target_species = SPECIES_HUMAN
var/list/permitted_types = list(
/obj/item/clothing/head/helmet/space/void,
@@ -69,4 +69,4 @@
/obj/item/device/modkit/tajaran
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."
target_species = "Tajara"
target_species = SPECIES_TAJ
@@ -3,11 +3,12 @@
desc = "An updated, modular intercom that fits over the head. Takes encryption keys"
var/radio_desc = ""
icon_state = "headset"
item_state = null //To remove the radio's state
matter = list(DEFAULT_WALL_MATERIAL = 75)
subspace_transmission = 1
canhear_range = 0 // can't hear headsets from very far away
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_hive = 0
@@ -63,6 +64,17 @@
return ..(freq, level)
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
origin_tech = list(TECH_ILLEGAL = 3)
syndie = 1
+1 -1
View File
@@ -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"
if(M.status_flags & FAKEDEATH)
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(advscan >= 2 && showadvscan == 1)
var/severity = ""
+22 -22
View File
@@ -106,13 +106,13 @@
if (M.use(1))
var/obj/item/weapon/secbot_assembly/ed209_assembly/B = new /obj/item/weapon/secbot_assembly/ed209_assembly
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)
user.remove_from_mob(src)
user.put_in_inactive_hand(B)
qdel(src)
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(src.l_leg) return
user.drop_item()
@@ -149,9 +149,9 @@
src.chest = W
src.updateicon()
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
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(src.head) return
@@ -161,16 +161,16 @@
src.head = W
src.updateicon()
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))
var/obj/item/device/mmi/M = W
if(check_completion())
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
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
if(!M.brainmob.key)
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.
return
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
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
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
var/mob/living/silicon/robot/O = new /mob/living/silicon/robot(get_turf(loc), unfinished = 1)
@@ -228,7 +228,7 @@
qdel(src)
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))
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(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
else
user.drop_item()
W.loc = src
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(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
else
var/obj/item/stack/cable_coil/coil = W
coil.use(1)
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
/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))
var/current_module = user.get_active_hand()
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
else
add_flashes(W,user)
else
add_flashes(W,user)
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))
user.drop_item()
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
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
else if(src.flash1)
user.drop_item()
W.loc = src
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
user.drop_item()
W.loc = src
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)
if(sabotaged)
user << "<span class='warning'>[src] is already sabotaged!</span>"
to_chat(user, "<span class='warning'>[src] is already sabotaged!</span>")
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
return 1
@@ -210,6 +210,7 @@
R.add_language(LANGUAGE_TRADEBAND, 1)
R.add_language(LANGUAGE_UNATHI, 1)
R.add_language(LANGUAGE_SIIK, 1)
R.add_language(LANGUAGE_AKHANI, 1)
R.add_language(LANGUAGE_SKRELLIAN, 1)
R.add_language(LANGUAGE_SKRELLIANFAR, 0)
R.add_language(LANGUAGE_GUTTER, 1)
@@ -89,6 +89,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
var/weldermes = "USER lights NAME with FLAME"
var/ignitermes = "USER lights NAME with FLAME"
var/brand
blood_sprite_state = null //Can't bloody these
/obj/item/clothing/mask/smokable/New()
..()
+29 -2
View File
@@ -18,7 +18,13 @@
var/cuff_sound = 'sound/weapons/handcuffs.ogg'
var/cuff_type = "handcuffs"
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)
@@ -95,6 +101,13 @@
target.update_inv_handcuffed()
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
/mob/living/carbon/human/RestrainedClickOn(var/atom/A)
if (A != src) return ..()
@@ -111,7 +124,7 @@ var/last_chew = 0
if (!O) return
var/datum/gender/T = gender_datums[H.get_visible_gender()]
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>")
add_attack_logs(H,H,"chewed own [O.name]")
@@ -207,6 +220,12 @@ var/last_chew = 0
breakouttime = 30
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)
if(user) //A ranged legcuff, until proper implementation as items it remains a projectile-only thing.
return 1
@@ -298,3 +317,11 @@ var/last_chew = 0
target.legcuffed = lcuffs
target.update_inv_legcuffed()
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"
sprite_sheets = list(
"Teshari" = 'icons/mob/species/seromi/id.dmi'
SPECIES_TESHARI = 'icons/mob/species/seromi/id.dmi'
)
var/access = list()
@@ -113,6 +113,12 @@
usr << "The fingerprint hash on the card is [fingerprint_hash]."
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()
. = ..()
var/datum/job/J = job_master.GetJob(rank)
@@ -100,7 +100,7 @@
user.put_in_hands(S)
else
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)
del(src)
user.put_in_hands(S)
@@ -108,6 +108,6 @@
/obj/item/weapon/material/snow/snowball/reinforced
name = "snowball"
desc = "A well-formed and fun snowball. It looks kind of dangerous."
icon_state = "snowball-reinf"
//icon_state = "reinf-snowball"
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_state = "backpack"
sprite_sheets = list(
"Teshari" = 'icons/mob/species/seromi/back.dmi'
SPECIES_TESHARI = 'icons/mob/species/seromi/back.dmi'
)
w_class = ITEMSIZE_LARGE
slot_flags = SLOT_BACK
@@ -8,7 +8,7 @@
max_w_class = ITEMSIZE_NORMAL
slot_flags = SLOT_BELT
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
@@ -22,6 +22,16 @@
show_above_suit = !show_above_suit
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()
if (ismob(src.loc))
var/mob/M = src.loc
@@ -23,7 +23,7 @@
name = "box"
desc = "It's just an ordinary 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
max_w_class = ITEMSIZE_SMALL
max_storage_space = INVENTORY_BOX_SPACE
@@ -354,12 +354,10 @@
//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)
if(!istype(W)) return 0
if(usr)
usr.remove_from_mob(W)
usr.update_icons() //update our overlays
W.forceMove(src)
W.on_enter_storage(src)
if(usr)
usr.remove_from_mob(W,target = src) //If given a target, handles forceMove()
W.on_enter_storage(src)
if (usr.client && usr.s_active != src)
usr.client.screen -= W
W.dropped(usr)
@@ -377,6 +375,10 @@
src.orient2hud(usr)
if(usr.s_active)
usr.s_active.show_to(usr)
else
W.forceMove(src)
W.on_enter_storage(src)
update_icon()
return 1
@@ -63,6 +63,12 @@
T.dismantle_wall(1)
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*/
/*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"
icon = 'icons/obj/tank.dmi'
sprite_sheets = list(
"Teshari" = 'icons/mob/species/seromi/back.dmi'
SPECIES_TESHARI = 'icons/mob/species/seromi/back.dmi'
)
var/gauge_icon = "indicator_tank"
+1 -1
View File
@@ -236,7 +236,7 @@
..()
/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]!",\
"You cut \the [C]'s restraints with \the [src]!",\
"You hear cable being cut.")
+138
View 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
View 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
View 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
View 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
View 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
View 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
View 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)
+2 -2
View File
@@ -123,10 +123,10 @@
/obj/structure/mirror/raider/attack_hand(var/mob/living/carbon/human/user)
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")
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
raiders.equip(vox)
if(user.mind)