Merge branch 'master' of https://github.com/PolarisSS13/Polaris into hacked_borg

This commit is contained in:
Anewbe
2017-11-21 23:20:15 -06:00
26 changed files with 421 additions and 141 deletions

View File

@@ -147,17 +147,27 @@
name = "rifle magazine (5.45mm practice)"
path =/obj/item/ammo_magazine/m545/practice
/datum/category_item/autolathe/arms/rifle_545_hunter
name = "rifle magazine (5.45mm hunting)"
path =/obj/item/ammo_magazine/m545/hunter
/datum/category_item/autolathe/arms/machinegun_545
name = "machinegun box magazine (5.56)"
path =/obj/item/ammo_magazine/m545saw
hidden = 1
/datum/category_item/autolathe/arms/machinegun_545_hunter
name = "machinegun box magazine (5.56 hunting)"
path =/obj/item/ammo_magazine/m545saw/hunter
hidden = 1
/////// 7.62
/datum/category_item/autolathe/arms/rifle_762
name = "rifle magazine (7.62mm)"
path =/obj/item/ammo_magazine/m762
hidden = 1
/*
/datum/category_item/autolathe/arms/rifle_small_762
name = "rifle magazine (7.62mm)"
@@ -384,6 +394,10 @@
path =/obj/item/ammo_magazine/clip/c762
hidden = 1
/datum/category_item/autolathe/arms/rifle_clip_762_hunter
name = "ammo clip (7.62mm hunting)"
path =/obj/item/ammo_magazine/clip/c762/hunter
/datum/category_item/autolathe/arms/rifle_clip_762_practice
name = "ammo clip (7.62mm practice)"
path =/obj/item/ammo_magazine/clip/c762/practice

View File

@@ -43,10 +43,13 @@ var/global/datum/controller/gameticker/ticker
'sound/music/title2.ogg',\
'sound/music/clouds.s3m',\
'sound/music/space_oddity.ogg') //Ground Control to Major Tom, this song is cool, what's going on?
send2mainirc("Server lobby is loaded and open at byond://[config.serverurl ? config.serverurl : (config.server ? config.server : "[world.address]:[world.port]")]")
do
pregame_timeleft = 180
world << "<B><FONT color='blue'>Welcome to the pre-game lobby!</FONT></B>"
world << "Please, setup your character and select ready. Game will start in [pregame_timeleft] seconds"
to_chat(world, "<B><FONT color='blue'>Welcome to the pregame lobby!</FONT></B>")
to_chat(world, "Please set up your character and select ready. The round will start in [pregame_timeleft] seconds.")
while(current_state == GAME_STATE_PREGAME)
for(var/i=0, i<10, i++)
sleep(1)
@@ -76,7 +79,7 @@ var/global/datum/controller/gameticker/ticker
if(!runnable_modes.len)
current_state = GAME_STATE_PREGAME
Master.SetRunLevel(RUNLEVEL_LOBBY)
world << "<B>Unable to choose playable game mode.</B> Reverting to pre-game lobby."
to_chat(world, "<B>Unable to choose playable game mode.</B> Reverting to pregame lobby.")
return 0
if(secret_force_mode != "secret")
src.mode = config.pick_mode(secret_force_mode)
@@ -91,7 +94,7 @@ var/global/datum/controller/gameticker/ticker
if(!src.mode)
current_state = GAME_STATE_PREGAME
Master.SetRunLevel(RUNLEVEL_LOBBY)
world << "<span class='danger'>Serious error in mode setup!</span> Reverting to pre-game lobby."
to_chat(world, "<span class='danger'>Serious error in mode setup!</span> Reverting to pregame lobby.") //Uses setup instead of set up due to computational context.
return 0
job_master.ResetOccupations()
@@ -100,7 +103,7 @@ var/global/datum/controller/gameticker/ticker
job_master.DivideOccupations() // Apparently important for new antagonist system to register specific job antags properly.
if(!src.mode.can_start())
world << "<B>Unable to start [mode.name].</B> Not enough players, [mode.required_players] players needed. Reverting to pre-game lobby."
world << "<B>Unable to start [mode.name].</B> Not enough players readied, [mode.required_players] players needed. Reverting to pregame lobby."
current_state = GAME_STATE_PREGAME
Master.SetRunLevel(RUNLEVEL_LOBBY)
mode.fail_setup()
@@ -116,13 +119,13 @@ var/global/datum/controller/gameticker/ticker
tmpmodes+=M.name
tmpmodes = sortList(tmpmodes)
if(tmpmodes.len)
world << "<B>Possibilities:</B> [english_list(tmpmodes, and_text= "; ", comma_text = "; ")]"
to_chat(world, "<B>Possibilities:</B> [english_list(tmpmodes, and_text= "; ", comma_text = "; ")]")
else
src.mode.announce()
setup_economy()
current_state = GAME_STATE_PLAYING
create_characters() //Create player characters and transfer them
create_characters() //Create player characters and transfer them.
collect_minds()
equip_characters()
data_core.manifest()
@@ -139,7 +142,7 @@ var/global/datum/controller/gameticker/ticker
//Deleting Startpoints but we need the ai point to AI-ize people later
if (S.name != "AI")
qdel(S)
world << "<FONT color='blue'><B>Enjoy the game!</B></FONT>"
to_chat(world, "<FONT color='blue'><B>Enjoy the game!</B></FONT>")
world << sound('sound/AI/welcome.ogg') // Skie
//Holiday Round-start stuff ~Carn
Holiday_Game_Start()
@@ -152,7 +155,7 @@ var/global/datum/controller/gameticker/ticker
if(C.holder)
admins_number++
if(admins_number == 0)
send2adminirc("Round has started with no admins online.")
send2adminirc("A round has started with no admins online.")
/* supply_controller.process() //Start the supply shuttle regenerating points -- TLE // handled in scheduler
master_controller.process() //Start master_controller.process()
@@ -304,7 +307,7 @@ var/global/datum/controller/gameticker/ticker
if(captainless)
for(var/mob/M in player_list)
if(!istype(M,/mob/new_player))
M << "Colony Directorship not forced on anyone."
to_chat(M, "Colony Directorship not forced on anyone.")
proc/process()
@@ -340,7 +343,7 @@ var/global/datum/controller/gameticker/ticker
feedback_set_details("end_proper","nuke")
time_left = 1 MINUTE //No point waiting five minutes if everyone's dead.
if(!delay_end)
world << "<span class='notice'><b>Rebooting due to destruction of station in [round(time_left/600)] minutes.</b></span>"
to_chat(world, "<span class='notice'><b>Rebooting due to destruction of station in [round(time_left/600)] minutes.</b></span>")
else
feedback_set_details("end_proper","proper completion")
time_left = round(restart_timeout)
@@ -353,15 +356,15 @@ var/global/datum/controller/gameticker/ticker
while(time_left > 0)
if(delay_end)
break
world << "<span class='notice'><b>Restarting in [round(time_left/600)] minute\s.</b></span>"
to_chat(world, "<span class='notice'><b>Restarting in [round(time_left/600)] minute\s.</b></span>")
time_left -= 1 MINUTES
sleep(600)
if(!delay_end)
world.Reboot()
else
world << "<span class='notice'><b>An admin has delayed the round end.</b></span>"
to_chat(world, "<span class='notice'><b>An admin has delayed the round end.</b></span>")
else
world << "<span class='notice'><b>An admin has delayed the round end.</b></span>"
to_chat(world, "<span class='notice'><b>An admin has delayed the round end.</b></span>")
else if (mode_finished)
post_game = 1
@@ -371,7 +374,7 @@ var/global/datum/controller/gameticker/ticker
//call a transfer shuttle vote
spawn(50)
if(!round_end_announced) // Spam Prevention. Now it should announce only once.
world << "<span class='danger'>The round has ended!</span>"
to_chat(world, "<span class='danger'>The round has ended!</span>")
round_end_announced = 1
vote.autotransfer()
@@ -385,7 +388,7 @@ var/global/datum/controller/gameticker/ticker
var/turf/playerTurf = get_turf(Player)
if(emergency_shuttle.departed && emergency_shuttle.evac)
if(isNotAdminLevel(playerTurf.z))
Player << "<font color='blue'><b>You managed to survive, but were marooned on [station_name()] as [Player.real_name]...</b></font>"
Player << "<font color='blue'><b>You survived the round, but remained on [station_name()] as [Player.real_name].</b></font>"
else
Player << "<font color='green'><b>You managed to survive the events on [station_name()] as [Player.real_name].</b></font>"
else if(isAdminLevel(playerTurf.z))
@@ -426,9 +429,9 @@ var/global/datum/controller/gameticker/ticker
if (!robo.connected_ai)
if (robo.stat != 2)
world << "<b>[robo.name] (Played by: [robo.key]) survived as an AI-less synthetic! Its laws were:</b>"
world << "<b>[robo.name] (Played by: [robo.key]) survived as an AI-less stationbound synthetic! Its laws were:</b>"
else
world << "<b>[robo.name] (Played by: [robo.key]) was unable to survive the rigors of being a synthetic without an AI. Its laws were:</b>"
world << "<b>[robo.name] (Played by: [robo.key]) was unable to survive the rigors of being a stationbound synthetic without an AI. Its laws were:</b>"
if(robo) //How the hell do we lose robo between here and the world messages directly above this?
robo.laws.show_laws(world)

View File

@@ -2,7 +2,7 @@
#define TRACKING_NO_COVERAGE 1
#define TRACKING_TERMINATE 2
/mob/living/silicon/ai/var/max_locations = 10
/mob/living/silicon/ai/var/max_locations = 30
/mob/living/silicon/ai/var/stored_locations[0]
/proc/InvalidPlayerTurf(turf/T as turf)

View File

@@ -0,0 +1,110 @@
/obj/machinery/transportpod
name = "Ballistic Transportation Pod"
desc = "A fast transit ballistic pod used to get from one place to the next. Batteries not included!"
icon = 'icons/obj/structures.dmi'
icon_state = "borg_pod_opened"
density = 1 //thicc
anchored = 1
use_power = 0
var/in_transit = 0
var/mob/occupant = null
var/xc = list(137, 209, 163, 110, 95, 60, 129, 201) // List of x values on the map to go to.
var/yc = list(134, 99, 169, 120, 96, 122, 189, 219) // List of y values on the map to go to.
var/limit_x = 3
var/limit_y = 3
/obj/machinery/transportpod/process()
if(occupant)
if(in_transit)
var/locNum = rand(0, 7) //pick a random location
var/turf/L = locate(xc[locNum], yc[locNum], 1) // Pairs the X and Y to get an actual location.
limit_x = xc[locNum]+1
limit_y = yc[locNum]+1
build()
sleep(20) //Give explosion time so the pod itself doesn't go boom
src.forceMove(L)
playsound(src, pick('sound/effects/Explosion1.ogg', 'sound/effects/Explosion2.ogg', 'sound/effects/Explosion3.ogg', 'sound/effects/Explosion4.ogg'))
in_transit = 0
sleep(2)
go_out()
sleep(2)
del(src)
/obj/machinery/transportpod/relaymove(mob/user as mob)
if(user.stat)
return
go_out()
return
/obj/machinery/transportpod/update_icon()
..()
if(occupant)
icon_state = "borg_pod_closed"
else
icon_state = "borg_pod_opened"
/obj/machinery/transportpod/Bumped(var/mob/living/O)
go_in(O)
/obj/machinery/transportpod/proc/go_in(var/mob/living/carbon/human/O)
if(occupant)
return
if(O.incapacitated()) //aint no sleepy people getting in here
return
add_fingerprint(O)
O.reset_view(src)
O.forceMove(src)
occupant = O
update_icon()
if(alert(O, "Are you sure you're ready to launch?", , "Yes", "No") == "Yes")
in_transit = 1
playsound(src, HYPERSPACE_WARMUP)
else
go_out()
return 1
/obj/machinery/transportpod/proc/go_out()
if(!occupant)
return
occupant.forceMove(src.loc)
occupant.reset_view()
occupant = null
update_icon()
/obj/machinery/transportpod/verb/move_eject()
set category = "Object"
set name = "Eject Pod"
set src in oview(1)
if(usr.incapacitated())
return
go_out()
add_fingerprint(usr)
return
/obj/machinery/transportpod/verb/move_inside()
set category = "Object"
set name = "Enter Pod"
set src in oview(1)
if(usr.incapacitated()) //just to DOUBLE CHECK the damn sleepy people don't touch the pod
return
go_in(usr)
/obj/machinery/transportpod/proc/build()
for(var/x = limit_x-2, x <= limit_x, x++)
for(var/y = limit_y-2, y <= limit_y, y++)
var/current_cell = locate(x, y, 1)
var/turf/T = get_turf(current_cell)
if(!current_cell)
continue
T.ChangeTurf(/turf/unsimulated/floor/shuttle_ceiling)

View File

@@ -53,6 +53,10 @@
if(default_deconstruction_screwdriver(user, I))
return
else if(default_deconstruction_crowbar(user, I))
if(occupant && avatar)
avatar.exit_vr()
avatar = null
go_out()
return

View File

@@ -771,13 +771,13 @@
user.visible_message("<span class='notice'><b>\The [user]</b> pokes [src].</span>","<span class='notice'>You poke [src].</span>")
last_message = world.time
obj/item/toy/plushie/verb/rename_plushie()
/obj/item/toy/plushie/verb/rename_plushie()
set name = "Name Plushie"
set category = "Object"
set desc = "Give your plushie a cute name!"
w_class = ITEMSIZE_TINY
var/mob/M = usr
if(!M.mind) return 0
if(!M.mind)
return 0
var/input = sanitizeSafe(input("What do you want to name the plushie?", ,""), MAX_NAME_LEN)

View File

@@ -209,3 +209,26 @@
var/obj/item/clothing/suit/sweater_type = sweater
sweaters[initial(sweater_type.name)] = sweater_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(sweaters))
/datum/gear/accessory/bracelet/material
display_name = "bracelet selection"
description = "Choose from a number of bracelets."
path = /obj/item/clothing/accessory/bracelet
cost = 1
/datum/gear/accessory/bracelet/material/New()
..()
var/bracelettype = list()
bracelettype["bracelet, steel"] = /obj/item/clothing/accessory/bracelet/material/steel
bracelettype["bracelet, iron"] = /obj/item/clothing/accessory/bracelet/material/iron
bracelettype["bracelet, silver"] = /obj/item/clothing/accessory/bracelet/material/silver
bracelettype["bracelet, gold"] = /obj/item/clothing/accessory/bracelet/material/gold
bracelettype["bracelet, platinum"] = /obj/item/clothing/accessory/bracelet/material/platinum
bracelettype["bracelet, glass"] = /obj/item/clothing/accessory/bracelet/material/glass
bracelettype["bracelet, wood"] = /obj/item/clothing/accessory/bracelet/material/wood
bracelettype["bracelet, plastic"] = /obj/item/clothing/accessory/bracelet/material/plastic
gear_tweaks += new/datum/gear_tweak/path(bracelettype)
/datum/gear/accessory/bracelet/friendship
display_name = "friendship bracelet"
path = /obj/item/clothing/accessory/bracelet/friendship

View File

@@ -302,3 +302,81 @@
/obj/item/clothing/accessory/scarf/stripedblue
name = "striped blue scarf"
icon_state = "stripedbluescarf"
//bracelets
/obj/item/clothing/accessory/bracelet
name = "bracelet"
desc = "A simple silver bracelet with a clasp."
icon = 'icons/obj/clothing/ties.dmi'
icon_state = "bracelet"
w_class = ITEMSIZE_TINY
slot_flags = SLOT_TIE
/obj/item/clothing/accessory/bracelet/friendship
name = "friendship bracelet"
desc = "A beautiful friendship bracelet in all the colors of the rainbow."
icon_state = "friendbracelet"
/obj/item/clothing/accessory/bracelet/friendship/verb/dedicate_bracelet()
set name = "Dedicate Bracelet"
set category = "Object"
set desc = "Dedicate your friendship bracelet to a special someone."
var/mob/M = usr
if(!M.mind)
return 0
var/input = sanitizeSafe(input("Who do you want to dedicate the bracelet to?", ,""), MAX_NAME_LEN)
if(src && input && !M.stat && in_range(M,src))
desc = "A beautiful friendship bracelet in all the colors of the rainbow. It's dedicated to [input]."
to_chat(M, "You dedicate the bracelet to [input], remembering the times you've had together.")
return 1
/obj/item/clothing/accessory/bracelet/material
icon_state = "materialbracelet"
/obj/item/clothing/accessory/bracelet/material/New(var/newloc, var/new_material)
..(newloc)
if(!new_material)
new_material = DEFAULT_WALL_MATERIAL
material = get_material_by_name(new_material)
if(!istype(material))
qdel(src)
return
name = "[material.display_name] bracelet"
desc = "A bracelet made from [material.display_name]."
color = material.icon_colour
/obj/item/clothing/accessory/bracelet/material/get_material()
return material
/obj/item/clothing/accessory/bracelet/material/wood/New(var/newloc)
..(newloc, "wood")
/obj/item/clothing/accessory/bracelet/material/plastic/New(var/newloc)
..(newloc, "plastic")
/obj/item/clothing/accessory/bracelet/material/iron/New(var/newloc)
..(newloc, "iron")
/obj/item/clothing/accessory/bracelet/material/steel/New(var/newloc)
..(newloc, "steel")
/obj/item/clothing/accessory/bracelet/material/silver/New(var/newloc)
..(newloc, "silver")
/obj/item/clothing/accessory/bracelet/material/gold/New(var/newloc)
..(newloc, "gold")
/obj/item/clothing/accessory/bracelet/material/platinum/New(var/newloc)
..(newloc, "platinum")
/obj/item/clothing/accessory/bracelet/material/phoron/New(var/newloc)
..(newloc, "phoron")
/obj/item/clothing/accessory/bracelet/material/glass/New(var/newloc)
..(newloc, "glass")
..()

View File

@@ -13,7 +13,7 @@
recipes += new/datum/stack_recipe("[display_name] armor plate", /obj/item/weapon/material/armor_plating, 1, time = 20, on_floor = 1, supplied_material = "[name]")
recipes += new/datum/stack_recipe("[display_name] grave marker", /obj/item/weapon/material/gravemarker, 5, time = 50, supplied_material = "[name]")
recipes += new/datum/stack_recipe("[display_name] ring", /obj/item/clothing/gloves/ring/material, 1, on_floor = 1, supplied_material = "[name]")
recipes += new/datum/stack_recipe("[display_name] bracelet", /obj/item/clothing/accessory/bracelet/material, 1, on_floor = 1, supplied_material = "[name]")
if(integrity>=50)
recipes += new/datum/stack_recipe("[display_name] door", /obj/structure/simple_door, 10, one_per_turf = 1, on_floor = 1, supplied_material = "[name]")

View File

@@ -442,7 +442,7 @@
/mob/living/silicon/pai/verb/allowmodification()
set name = "Change Access Modifcation Permission"
set category = "pAI Commands"
desc = "Allows people to modify your access or block people from modifying your access."
set desc = "Allows people to modify your access or block people from modifying your access."
if(idaccessible == 0)
idaccessible = 1

View File

@@ -79,7 +79,7 @@
icon_living = "mouse_[body_color]"
icon_dead = "mouse_[body_color]_dead"
icon_rest = "mouse_[body_color]_sleep"
desc = "It's a small [body_color] rodent, often seen hiding in maintenance areas and making a nuisance of itself."
desc = "A small [body_color] rodent, often seen hiding in maintenance areas and making a nuisance of itself."
/mob/living/simple_animal/mouse/proc/splat()
src.health = 0
@@ -95,13 +95,13 @@
if( ishuman(AM) )
if(!stat)
var/mob/M = AM
M << "<font color='blue'>\icon[src] Squeek!</font>"
M.visible_message("<font color='blue'>\icon[src] Squeek!</font>")
M << 'sound/effects/mouse_squeak.ogg'
..()
/mob/living/simple_animal/mouse/death()
layer = MOB_LAYER
playsound(src, 'sound/effects/mouse_squeak_loud.ogg', 50, 1)
playsound(src, 'sound/effects/mouse_squeak_loud.ogg', 35, 1)
if(client)
client.time_died_as_mouse = world.time
..()

View File

@@ -504,7 +504,10 @@
stun_effect_act(0, Proj.agony)
if(!Proj.nodamage)
adjustBruteLoss(Proj.damage)
var/true_damage = Proj.damage
if(!Proj.SA_vulnerability || Proj.SA_vulnerability == intelligence_level)
true_damage += Proj.SA_bonus_damage
adjustBruteLoss(true_damage)
if(Proj.firer)
react_to_attack(Proj.firer)

View File

@@ -356,6 +356,14 @@
name = "extended magazine (5.45mm armor-piercing)"
max_ammo = 30
/obj/item/ammo_magazine/m545/hunter
name = "magazine (5.45mm hunting)"
ammo_type = /obj/item/ammo_casing/a545/hunter
/obj/item/ammo_magazine/m545/hunter/ext
name = "extended magazine (5.45mm hunting)"
max_ammo = 30
/obj/item/ammo_magazine/m545/small
name = "reduced magazine (5.45mm)"
icon_state = "m545-small"
@@ -373,6 +381,10 @@
name = "magazine (5.45mm armor-piercing)"
ammo_type = /obj/item/ammo_casing/a545/ap
/obj/item/ammo_magazine/m545/small/hunter
name = "magazine (5.45mm hunting)"
ammo_type = /obj/item/ammo_casing/a545/hunter
/obj/item/ammo_magazine/clip/c545
name = "ammo clip (5.45mm)"
icon_state = "clip_rifle"
@@ -386,6 +398,10 @@
name = "rifle clip (5.45mm armor-piercing)"
ammo_type = /obj/item/ammo_casing/a545/ap
/obj/item/ammo_magazine/clip/c545/hunter
name = "rifle clip (5.45mm hunting)"
ammo_type = /obj/item/ammo_casing/a545/hunter
/obj/item/ammo_magazine/clip/c545/practice
name = "rifle clip (5.45mm practice)"
ammo_type = /obj/item/ammo_casing/a545
@@ -406,6 +422,10 @@
name = "magazine box (5.45mm armor-piercing)"
ammo_type = /obj/item/ammo_casing/a545/ap
/obj/item/ammo_magazine/m545saw/hunter
name = "magazine box (5.45mm hunting)"
ammo_type = /obj/item/ammo_casing/a545/hunter
/obj/item/ammo_magazine/m545saw/empty
initial_ammo = 0
@@ -505,6 +525,10 @@
name = "rifle clip (7.62mm practice)"
ammo_type = /obj/item/ammo_casing/a762p
/obj/item/ammo_magazine/clip/c762/hunter
name = "rifle clip (7.62mm hunting)"
ammo_type = /obj/item/ammo_casing/a762/hunter
/obj/item/ammo_magazine/m762svd
name = "\improper SVD magazine (7.62mm)"
icon_state = "SVD"
@@ -551,12 +575,12 @@
/obj/item/ammo_magazine/clip/c12g
name = "ammo clip (12g slug)"
icon_state = "12gclipslug" //largely a codersprite, looks good enough. feel free to make a better one.
icon_state = "12gclipslug" // Still a placeholder sprite. Feel free to make a better one.
desc = "A color-coded metal clip for holding and quickly loading shotgun shells. This one is loaded with slugs."
caliber = "12g"
ammo_type = /obj/item/ammo_casing/a12g
matter = list(DEFAULT_WALL_MATERIAL = 1790) // slugs shells x4 + 350 metal for the clip itself.
max_ammo = 4
matter = list(DEFAULT_WALL_MATERIAL = 1070) // slugs shells x2 + 350 metal for the clip itself.
max_ammo = 2
multiple_sprites = 1
/obj/item/ammo_magazine/clip/c12g/pellet
@@ -564,14 +588,14 @@
icon_state = "12gclipshell"
desc = "A color-coded metal clip for holding and quickly loading shotgun shells. This one is loaded with buckshot."
ammo_type = /obj/item/ammo_casing/a12g/pellet
matter = list(DEFAULT_WALL_MATERIAL = 1790) // buckshot and slugs cost the same
matter = list(DEFAULT_WALL_MATERIAL = 1070) // buckshot and slugs cost the same
/obj/item/ammo_magazine/clip/c12g/beanbag
name = "ammo clip (12g beanbag)"
icon_state = "12gclipbean"
desc = "A color-coded metal clip for holding and quickly loading shotgun shells. This one is loaded with beanbags."
ammo_type = /obj/item/ammo_casing/a12g/beanbag
matter = list(DEFAULT_WALL_MATERIAL = 1070) //beanbags x4 + 350 metal
matter = list(DEFAULT_WALL_MATERIAL = 710) //beanbags x2 + 350 metal
///////// .75 Gyrojet /////////

View File

@@ -258,6 +258,10 @@
desc = "A 7.62mm hollow-point bullet casing."
projectile_type = /obj/item/projectile/bullet/rifle/a762/hollow
/obj/item/ammo_casing/a762/hunter
desc = "A 7.62mm hunting bullet casing."
projectile_type = /obj/item/projectile/bullet/rifle/a762/hunter
/*
* 14.5mm (anti-materiel rifle round)
*/
@@ -298,6 +302,10 @@
desc = "A 5.45mm hollow-point bullet casing."
projectile_type = /obj/item/projectile/bullet/rifle/a545/hollow
/obj/item/ammo_casing/a545/hunter
desc = "A 5.45mm hunting bullet casing."
projectile_type = /obj/item/projectile/bullet/rifle/a545/hunter
/*
* Misc
*/

View File

@@ -38,6 +38,8 @@
var/damage = 10
var/damage_type = BRUTE //BRUTE, BURN, TOX, OXY, CLONE, HALLOSS are the only things that should be in here
var/SA_bonus_damage = 0 // Some bullets inflict extra damage on simple animals.
var/SA_vulnerability = null // What kind of simple animal the above bonus damage should be applied to. Set to null to apply to all SAs.
var/nodamage = 0 //Determines if the projectile will skip any damage inflictions
var/taser_effect = 0 //If set then the projectile will apply it's agony damage using stun_effect_act() to mobs it hits, and other damage will be ignored
var/check_armour = "bullet" //Defines what armor to use when it hits things. Must be set to bullet, laser, energy,or bomb //Cael - bio and rad are also valid

View File

@@ -209,6 +209,11 @@
armor_penetration = -50
penetrating = 0
/obj/item/projectile/bullet/rifle/a762/hunter // Optimized for killing simple animals and not people, because Balance.
damage = 20
SA_bonus_damage = 50 // 70 total on animals.
SA_vulnerability = SA_ANIMAL
/obj/item/projectile/bullet/rifle/a545
damage = 25
@@ -221,6 +226,11 @@
armor_penetration = -50
penetrating = 0
/obj/item/projectile/bullet/rifle/a545/hunter
damage = 15
SA_bonus_damage = 35 // 50 total on animals.
SA_vulnerability = SA_ANIMAL
/obj/item/projectile/bullet/rifle/a145
damage = 80
stun = 3

View File

@@ -210,7 +210,7 @@ other types of metals and chemistry for reagents).
build_type = PROTOLATHE | MECHFAB
/datum/design/item/powercell/AssembleDesignName()
name = "Power cell model ([item_name])"
name = "Power Cell Model ([item_name])"
/datum/design/item/powercell/AssembleDesignDesc()
if(build_path)

View File

@@ -7,47 +7,47 @@
category = "Ripley"
/datum/design/item/mechfab/ripley/chassis
name = "Ripley chassis"
name = "Ripley Chassis"
id = "ripley_chassis"
build_path = /obj/item/mecha_parts/chassis/ripley
time = 10
materials = list(DEFAULT_WALL_MATERIAL = 15000)
/datum/design/item/mechfab/ripley/chassis/firefighter
name = "Firefigher chassis"
name = "Firefigher Chassis"
id = "firefighter_chassis"
build_path = /obj/item/mecha_parts/chassis/firefighter
/datum/design/item/mechfab/ripley/torso
name = "Ripley torso"
name = "Ripley Torso"
id = "ripley_torso"
build_path = /obj/item/mecha_parts/part/ripley_torso
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 30000, "glass" = 11250)
/datum/design/item/mechfab/ripley/left_arm
name = "Ripley left arm"
name = "Ripley Left Arm"
id = "ripley_left_arm"
build_path = /obj/item/mecha_parts/part/ripley_left_arm
time = 15
materials = list(DEFAULT_WALL_MATERIAL = 18750)
/datum/design/item/mechfab/ripley/right_arm
name = "Ripley right arm"
name = "Ripley Right Arm"
id = "ripley_right_arm"
build_path = /obj/item/mecha_parts/part/ripley_right_arm
time = 15
materials = list(DEFAULT_WALL_MATERIAL = 18750)
/datum/design/item/mechfab/ripley/left_leg
name = "Ripley left leg"
name = "Ripley Left Leg"
id = "ripley_left_leg"
build_path = /obj/item/mecha_parts/part/ripley_left_leg
time = 15
materials = list(DEFAULT_WALL_MATERIAL = 22500)
/datum/design/item/mechfab/ripley/right_leg
name = "Ripley right leg"
name = "Ripley Right Leg"
id = "ripley_right_leg"
build_path = /obj/item/mecha_parts/part/ripley_right_leg
time = 15
@@ -57,49 +57,49 @@
category = "Odysseus"
/datum/design/item/mechfab/odysseus/chassis
name = "Odysseus chassis"
name = "Odysseus Chassis"
id = "odysseus_chassis"
build_path = /obj/item/mecha_parts/chassis/odysseus
time = 10
materials = list(DEFAULT_WALL_MATERIAL = 15000)
/datum/design/item/mechfab/odysseus/torso
name = "Odysseus torso"
name = "Odysseus Torso"
id = "odysseus_torso"
build_path = /obj/item/mecha_parts/part/odysseus_torso
time = 18
materials = list(DEFAULT_WALL_MATERIAL = 18750)
/datum/design/item/mechfab/odysseus/head
name = "Odysseus head"
name = "Odysseus Head"
id = "odysseus_head"
build_path = /obj/item/mecha_parts/part/odysseus_head
time = 10
materials = list(DEFAULT_WALL_MATERIAL = 1500, "glass" = 7500)
/datum/design/item/mechfab/odysseus/left_arm
name = "Odysseus left arm"
name = "Odysseus Left Arm"
id = "odysseus_left_arm"
build_path = /obj/item/mecha_parts/part/odysseus_left_arm
time = 12
materials = list(DEFAULT_WALL_MATERIAL = 7500)
/datum/design/item/mechfab/odysseus/right_arm
name = "Odysseus right arm"
name = "Odysseus Right Arm"
id = "odysseus_right_arm"
build_path = /obj/item/mecha_parts/part/odysseus_right_arm
time = 12
materials = list(DEFAULT_WALL_MATERIAL = 7500)
/datum/design/item/mechfab/odysseus/left_leg
name = "Odysseus left leg"
name = "Odysseus Left Leg"
id = "odysseus_left_leg"
build_path = /obj/item/mecha_parts/part/odysseus_left_leg
time = 13
materials = list(DEFAULT_WALL_MATERIAL = 11250)
/datum/design/item/mechfab/odysseus/right_leg
name = "Odysseus right leg"
name = "Odysseus Right Leg"
id = "odysseus_right_leg"
build_path = /obj/item/mecha_parts/part/odysseus_right_leg
time = 13
@@ -109,56 +109,56 @@
category = "Gygax"
/datum/design/item/mechfab/gygax/chassis
name = "Gygax chassis"
name = "Gygax Chassis"
id = "gygax_chassis"
build_path = /obj/item/mecha_parts/chassis/gygax
time = 10
materials = list(DEFAULT_WALL_MATERIAL = 18750)
/datum/design/item/mechfab/gygax/torso
name = "Gygax torso"
name = "Gygax Torso"
id = "gygax_torso"
build_path = /obj/item/mecha_parts/part/gygax_torso
time = 30
materials = list(DEFAULT_WALL_MATERIAL = 37500, "glass" = 15000)
/datum/design/item/mechfab/gygax/head
name = "Gygax head"
name = "Gygax Head"
id = "gygax_head"
build_path = /obj/item/mecha_parts/part/gygax_head
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 15000, "glass" = 7500)
/datum/design/item/mechfab/gygax/left_arm
name = "Gygax left arm"
name = "Gygax Left Arm"
id = "gygax_left_arm"
build_path = /obj/item/mecha_parts/part/gygax_left_arm
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 22500)
/datum/design/item/mechfab/gygax/right_arm
name = "Gygax right arm"
name = "Gygax Right Arm"
id = "gygax_right_arm"
build_path = /obj/item/mecha_parts/part/gygax_right_arm
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 22500)
/datum/design/item/mechfab/gygax/left_leg
name = "Gygax left leg"
name = "Gygax Left Leg"
id = "gygax_left_leg"
build_path = /obj/item/mecha_parts/part/gygax_left_leg
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 26250)
/datum/design/item/mechfab/gygax/right_leg
name = "Gygax right leg"
name = "Gygax Right Leg"
id = "gygax_right_leg"
build_path = /obj/item/mecha_parts/part/gygax_right_leg
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 26250)
/datum/design/item/mechfab/gygax/armour
name = "Gygax armour plates"
name = "Gygax Armour Plates"
id = "gygax_armour"
build_path = /obj/item/mecha_parts/part/gygax_armour
time = 60
@@ -168,56 +168,56 @@
category = "Durand"
/datum/design/item/mechfab/durand/chassis
name = "Durand chassis"
name = "Durand Chassis"
id = "durand_chassis"
build_path = /obj/item/mecha_parts/chassis/durand
time = 10
materials = list(DEFAULT_WALL_MATERIAL = 18750)
/datum/design/item/mechfab/durand/torso
name = "Durand torso"
name = "Durand Torso"
id = "durand_torso"
build_path = /obj/item/mecha_parts/part/durand_torso
time = 30
materials = list(DEFAULT_WALL_MATERIAL = 41250, "glass" = 15000, "silver" = 7500)
/datum/design/item/mechfab/durand/head
name = "Durand head"
name = "Durand Head"
id = "durand_head"
build_path = /obj/item/mecha_parts/part/durand_head
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 18750, "glass" = 7500, "silver" = 2250)
/datum/design/item/mechfab/durand/left_arm
name = "Durand left arm"
name = "Durand Left Arm"
id = "durand_left_arm"
build_path = /obj/item/mecha_parts/part/durand_left_arm
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 26250, "silver" = 2250)
/datum/design/item/mechfab/durand/right_arm
name = "Durand right arm"
name = "Durand Right Arm"
id = "durand_right_arm"
build_path = /obj/item/mecha_parts/part/durand_right_arm
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 26250, "silver" = 2250)
/datum/design/item/mechfab/durand/left_leg
name = "Durand left leg"
name = "Durand Left Leg"
id = "durand_left_leg"
build_path = /obj/item/mecha_parts/part/durand_left_leg
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 30000, "silver" = 2250)
/datum/design/item/mechfab/durand/right_leg
name = "Durand right leg"
name = "Durand Right Leg"
id = "durand_right_leg"
build_path = /obj/item/mecha_parts/part/durand_right_leg
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 30000, "silver" = 2250)
/datum/design/item/mechfab/durand/armour
name = "Durand armour plates"
name = "Durand Armour Plates"
id = "durand_armour"
build_path = /obj/item/mecha_parts/part/durand_armour
time = 60
@@ -234,14 +234,14 @@
desc = "Allows for the construction of \a '[item_name]' exosuit module."
/datum/design/item/mecha/tracking
name = "Exosuit tracking beacon"
name = "Exosuit Tracking Beacon"
id = "mech_tracker"
time = 5
materials = list(DEFAULT_WALL_MATERIAL = 375)
build_path = /obj/item/mecha_parts/mecha_tracking
/datum/design/item/mecha/hydraulic_clamp
name = "Hydraulic clamp"
name = "Hydraulic Clamp"
id = "hydraulic_clamp"
build_path = /obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp
@@ -256,12 +256,12 @@
build_path = /obj/item/mecha_parts/mecha_equipment/tool/extinguisher
/datum/design/item/mecha/cable_layer
name = "Cable layer"
name = "Cable Layer"
id = "mech_cable_layer"
build_path = /obj/item/mecha_parts/mecha_equipment/tool/cable_layer
/datum/design/item/mecha/flaregun
name = "Flare launcher"
name = "Flare Launcher"
id = "mecha_flare_gun"
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flare
materials = list(DEFAULT_WALL_MATERIAL = 9375)
@@ -273,30 +273,20 @@
materials = list(DEFAULT_WALL_MATERIAL = 3750, "glass" = 7500)
/datum/design/item/mecha/syringe_gun
name = "Syringe gun"
name = "Syringe Gun"
id = "mech_syringe_gun"
build_path = /obj/item/mecha_parts/mecha_equipment/tool/syringe_gun
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 2250, "glass" = 1500)
/*
/datum/design/item/mecha/syringe_gun
desc = "Exosuit-mounted syringe gun and chemical synthesizer."
id = "mech_syringe_gun"
req_tech = list(TECH_MATERIAL = 3, TECH_BIO = 4, TECH_MAGNET = 4, TECH_DATA = 3)
build_path = /obj/item/mecha_parts/mecha_equipment/tool/syringe_gun
*/
/datum/design/item/mecha/passenger
name = "Passenger compartment"
name = "Passenger Compartment"
id = "mech_passenger"
build_path = /obj/item/mecha_parts/mecha_equipment/tool/passenger
materials = list(DEFAULT_WALL_MATERIAL = 3750, "glass" = 3750)
//obj/item/mecha_parts/mecha_equipment/repair_droid,
//obj/item/mecha_parts/mecha_equipment/jetpack, //TODO MECHA JETPACK SPRITE MISSING
/datum/design/item/mecha/taser
name = "PBT \"Pacifier\" mounted taser"
name = "PBT \"Pacifier\" Mounted Taser"
id = "mech_taser"
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/taser
@@ -316,38 +306,38 @@
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot
/datum/design/item/mecha/weapon/laser
name = "CH-PS \"Immolator\" laser"
name = "CH-PS \"Immolator\" Laser"
id = "mech_laser"
req_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 3)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser
/datum/design/item/mecha/weapon/laser_rigged
name = "Jury-rigged welder-laser"
name = "Jury-Rigged Welder-Laser"
desc = "Allows for the construction of a welder-laser assembly package for non-combat exosuits."
id = "mech_laser_rigged"
req_tech = list(TECH_COMBAT = 2, TECH_MAGNET = 2)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/riggedlaser
/datum/design/item/mecha/weapon/laser_heavy
name = "CH-LC \"Solaris\" laser cannon"
name = "CH-LC \"Solaris\" Laser Cannon"
id = "mech_laser_heavy"
req_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 4)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy
/datum/design/item/mecha/weapon/ion
name = "mkIV ion heavy cannon"
name = "MK-IV Ion Heavy Cannon"
id = "mech_ion"
req_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 4)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/ion
/datum/design/item/mecha/weapon/grenade_launcher
name = "SGL-6 grenade launcher"
name = "SGL-6 Grenade Launcher"
id = "mech_grenade_launcher"
req_tech = list(TECH_COMBAT = 3)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang
/datum/design/item/mecha/weapon/clusterbang_launcher
name = "SOP-6 grenade launcher"
name = "SOP-6 Grenade Launcher"
desc = "A weapon that violates the Geneva Convention at 6 rounds per minute."
id = "clusterbang_launcher"
req_tech = list(TECH_COMBAT= 5, TECH_MATERIAL = 5, TECH_ILLEGAL = 3)
@@ -380,7 +370,7 @@
// *** Nonweapon modules
/datum/design/item/mecha/wormhole_gen
name = "Wormhole generator"
name = "Wormhole Generator"
desc = "An exosuit module that can generate small quasi-stable wormholes."
id = "mech_wormhole_gen"
req_tech = list(TECH_BLUESPACE = 3, TECH_MAGNET = 2)
@@ -403,36 +393,38 @@
build_path = /obj/item/mecha_parts/mecha_equipment/tool/rcd
/datum/design/item/mecha/gravcatapult
name = "Gravitational catapult"
name = "Gravitational Catapult"
desc = "An exosuit-mounted gravitational catapult."
id = "mech_gravcatapult"
req_tech = list(TECH_BLUESPACE = 2, TECH_MAGNET = 3, TECH_ENGINEERING = 3)
build_path = /obj/item/mecha_parts/mecha_equipment/gravcatapult
/datum/design/item/mecha/repair_droid
name = "Repair droid"
name = "Repair Droid"
desc = "Automated repair droid, exosuits' best companion. BEEP BOOP"
id = "mech_repair_droid"
req_tech = list(TECH_MAGNET = 3, TECH_DATA = 3, TECH_ENGINEERING = 3)
materials = list(DEFAULT_WALL_MATERIAL = 7500, "gold" = 750, "silver" = 1500, "glass" = 3750)
build_path = /obj/item/mecha_parts/mecha_equipment/repair_droid
//obj/item/mecha_parts/mecha_equipment/jetpack, //TODO MECHA JETPACK SPRITE MISSING
/datum/design/item/mecha/phoron_generator
desc = "Phoron reactor."
desc = "Phoron Reactor"
id = "mech_phoron_generator"
req_tech = list(TECH_PHORON = 2, TECH_POWER= 2, TECH_ENGINEERING = 2)
build_path = /obj/item/mecha_parts/mecha_equipment/generator
materials = list(DEFAULT_WALL_MATERIAL = 7500, "silver" = 375, "glass" = 750)
/datum/design/item/mecha/energy_relay
name = "Energy relay"
name = "Energy Relay"
id = "mech_energy_relay"
req_tech = list(TECH_MAGNET = 4, TECH_POWER = 3)
materials = list(DEFAULT_WALL_MATERIAL = 7500, "gold" = 1500, "silver" = 2250, "glass" = 1500)
build_path = /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay
/datum/design/item/mecha/ccw_armor
name = "CCW armor booster"
name = "CCW Armor Booster"
desc = "Exosuit close-combat armor booster."
id = "mech_ccw_armor"
req_tech = list(TECH_MATERIAL = 5, TECH_COMBAT = 4)
@@ -440,6 +432,7 @@
build_path = /obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster
/datum/design/item/mecha/proj_armor
name = "Ranged Armor Booster"
desc = "Exosuit projectile armor booster."
id = "mech_proj_armor"
req_tech = list(TECH_MATERIAL = 5, TECH_COMBAT = 5, TECH_ENGINEERING = 3)
@@ -447,7 +440,7 @@
build_path = /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster
/datum/design/item/mecha/diamond_drill
name = "Diamond drill"
name = "Diamond Drill"
desc = "A diamond version of the exosuit drill. It's harder, better, faster, stronger."
id = "mech_diamond_drill"
req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3)
@@ -455,7 +448,7 @@
build_path = /obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill
/datum/design/item/mecha/generator_nuclear
name = "Nuclear reactor"
name = "Nuclear Reactor"
desc = "Exosuit-held nuclear reactor. Converts uranium and everyone's health to energy."
id = "mech_generator_nuclear"
req_tech = list(TECH_POWER= 3, TECH_ENGINEERING = 3, TECH_MATERIAL = 3)
@@ -463,7 +456,7 @@
build_path = /obj/item/mecha_parts/mecha_equipment/generator/nuclear
/datum/design/item/synthetic_flash
name = "Synthetic flash"
name = "Synthetic Flash"
id = "sflash"
req_tech = list(TECH_MAGNET = 3, TECH_COMBAT = 2)
build_type = MECHFAB

View File

@@ -63,7 +63,7 @@
var/gender = MALE
/datum/design/item/prosfab/pros/torso/male
name = "FBP torso (M)"
name = "FBP Torso (M)"
id = "pros_torso_m"
build_path = /obj/item/organ/external/chest
gender = MALE
@@ -71,13 +71,13 @@
/obj/item/organ/external/chest/f //To satisfy Travis. :|
/datum/design/item/prosfab/pros/torso/female
name = "FBP torso (F)"
name = "FBP Torso (F)"
id = "pros_torso_f"
build_path = /obj/item/organ/external/chest/f
gender = FEMALE
/datum/design/item/prosfab/pros/head
name = "Prosthetic head"
name = "Prosthetic Head"
id = "pros_head"
build_path = /obj/item/organ/external/head
time = 30
@@ -85,103 +85,106 @@
// req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 3, TECH_DATA = 3) //Saving the values just in case
/datum/design/item/prosfab/pros/l_arm
name = "Prosthetic left arm"
name = "Prosthetic Left Arm"
id = "pros_l_arm"
build_path = /obj/item/organ/external/arm
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 10125)
/datum/design/item/prosfab/pros/l_hand
name = "Prosthetic left hand"
name = "Prosthetic Left Hand"
id = "pros_l_hand"
build_path = /obj/item/organ/external/hand
time = 15
materials = list(DEFAULT_WALL_MATERIAL = 3375)
/datum/design/item/prosfab/pros/r_arm
name = "Prosthetic right arm"
name = "Prosthetic Right Arm"
id = "pros_r_arm"
build_path = /obj/item/organ/external/arm/right
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 10125)
/datum/design/item/prosfab/pros/r_hand
name = "Prosthetic right hand"
name = "Prosthetic Right Hand"
id = "pros_r_hand"
build_path = /obj/item/organ/external/hand/right
time = 15
materials = list(DEFAULT_WALL_MATERIAL = 3375)
/datum/design/item/prosfab/pros/l_leg
name = "Prosthetic left leg"
name = "Prosthetic Left Leg"
id = "pros_l_leg"
build_path = /obj/item/organ/external/leg
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 8437)
/datum/design/item/prosfab/pros/l_foot
name = "Prosthetic left foot"
name = "Prosthetic Left Foot"
id = "pros_l_foot"
build_path = /obj/item/organ/external/foot
time = 15
materials = list(DEFAULT_WALL_MATERIAL = 2813)
/datum/design/item/prosfab/pros/r_leg
name = "Prosthetic right leg"
name = "Prosthetic Right Leg"
id = "pros_r_leg"
build_path = /obj/item/organ/external/leg/right
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 8437)
/datum/design/item/prosfab/pros/r_foot
name = "Prosthetic right foot"
name = "Prosthetic Right Foot"
id = "pros_r_foot"
build_path = /obj/item/organ/external/foot/right
time = 15
materials = list(DEFAULT_WALL_MATERIAL = 2813)
/datum/design/item/prosfab/pros/cell
name = "Prosthetic powercell"
/datum/design/item/prosfab/pros/internal
category = "Prosthetics, Internal"
/datum/design/item/prosfab/pros/internal/cell
name = "Prosthetic Powercell"
id = "pros_cell"
build_path = /obj/item/organ/internal/cell
time = 15
materials = list(DEFAULT_WALL_MATERIAL = 7500, "glass" = 3000)
// req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2)
/datum/design/item/prosfab/pros/eyes
name = "Prosthetic eyes"
/datum/design/item/prosfab/pros/internal/eyes
name = "Prosthetic Eyes"
id = "pros_eyes"
build_path = /obj/item/organ/internal/eyes/robot
time = 15
materials = list(DEFAULT_WALL_MATERIAL = 5625, "glass" = 5625)
// req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2)
/datum/design/item/prosfab/pros/heart
name = "Prosthetic heart"
/datum/design/item/prosfab/pros/internal/heart
name = "Prosthetic Heart"
id = "pros_heart"
build_path = /obj/item/organ/internal/heart
time = 15
materials = list(DEFAULT_WALL_MATERIAL = 5625, "glass" = 1000)
// req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2)
/datum/design/item/prosfab/pros/lungs
name = "Prosthetic lungs"
/datum/design/item/prosfab/pros/internal/lungs
name = "Prosthetic Lungs"
id = "pros_lung"
build_path = /obj/item/organ/internal/lungs
time = 15
materials = list(DEFAULT_WALL_MATERIAL = 5625, "glass" = 1000)
// req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2)
/datum/design/item/prosfab/pros/liver
name = "Prosthetic liver"
/datum/design/item/prosfab/pros/internal/liver
name = "Prosthetic Liver"
id = "pros_liver"
build_path = /obj/item/organ/internal/liver
time = 15
materials = list(DEFAULT_WALL_MATERIAL = 5625, "glass" = 1000)
// req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2)
/datum/design/item/prosfab/pros/kidneys
name = "Prosthetic liver"
/datum/design/item/prosfab/pros/internal/kidneys
name = "Prosthetic Kidneys"
id = "pros_kidney"
build_path = /obj/item/organ/internal/kidneys
time = 15
@@ -195,49 +198,49 @@
materials = list(DEFAULT_WALL_MATERIAL = 3750)
/datum/design/item/prosfab/cyborg/exoskeleton
name = "Robot exoskeleton"
name = "Robot Exoskeleton"
id = "robot_exoskeleton"
build_path = /obj/item/robot_parts/robot_suit
time = 50
materials = list(DEFAULT_WALL_MATERIAL = 37500)
/datum/design/item/prosfab/cyborg/torso
name = "Robot torso"
name = "Robot Torso"
id = "robot_torso"
build_path = /obj/item/robot_parts/chest
time = 35
materials = list(DEFAULT_WALL_MATERIAL = 30000)
/datum/design/item/prosfab/cyborg/head
name = "Robot head"
name = "Robot Head"
id = "robot_head"
build_path = /obj/item/robot_parts/head
time = 35
materials = list(DEFAULT_WALL_MATERIAL = 18750)
/datum/design/item/prosfab/cyborg/l_arm
name = "Robot left arm"
name = "Robot Left Arm"
id = "robot_l_arm"
build_path = /obj/item/robot_parts/l_arm
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 13500)
/datum/design/item/prosfab/cyborg/r_arm
name = "Robot right arm"
name = "Robot Right Arm"
id = "robot_r_arm"
build_path = /obj/item/robot_parts/r_arm
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 13500)
/datum/design/item/prosfab/cyborg/l_leg
name = "Robot left leg"
name = "Robot Left Leg"
id = "robot_l_leg"
build_path = /obj/item/robot_parts/l_leg
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 11250)
/datum/design/item/prosfab/cyborg/r_leg
name = "Robot right leg"
name = "Robot Right Leg"
id = "robot_r_leg"
build_path = /obj/item/robot_parts/r_leg
time = 20
@@ -252,7 +255,7 @@
materials = list(DEFAULT_WALL_MATERIAL = 7500)
/datum/design/item/prosfab/cyborg/component/binary_communication_device
name = "Binary communication device"
name = "Binary Communication Device"
id = "binary_communication_device"
build_path = /obj/item/robot_parts/robot_component/binary_communication_device
@@ -267,7 +270,7 @@
build_path = /obj/item/robot_parts/robot_component/actuator
/datum/design/item/prosfab/cyborg/component/diagnosis_unit
name = "Diagnosis unit"
name = "Diagnosis Unit"
id = "diagnosis_unit"
build_path = /obj/item/robot_parts/robot_component/diagnosis_unit
@@ -277,7 +280,7 @@
build_path = /obj/item/robot_parts/robot_component/camera
/datum/design/item/prosfab/cyborg/component/armour
name = "Armour plating"
name = "Armour Plating"
id = "armour"
build_path = /obj/item/robot_parts/robot_component/armour
@@ -290,47 +293,47 @@
materials = list(DEFAULT_WALL_MATERIAL = 7500)
/datum/design/item/prosfab/robot_upgrade/rename
name = "Rename module"
name = "Rename Module"
desc = "Used to rename a cyborg."
id = "borg_rename_module"
build_path = /obj/item/borg/upgrade/rename
/datum/design/item/prosfab/robot_upgrade/reset
name = "Reset module"
name = "Reset Module"
desc = "Used to reset a cyborg's module. Destroys any other upgrades applied to the robot."
id = "borg_reset_module"
build_path = /obj/item/borg/upgrade/reset
/datum/design/item/prosfab/robot_upgrade/restart
name = "Emergency restart module"
name = "Emergency Restart Module"
desc = "Used to force a restart of a disabled-but-repaired robot, bringing it back online."
id = "borg_restart_module"
materials = list(DEFAULT_WALL_MATERIAL = 45000, "glass" = 3750)
build_path = /obj/item/borg/upgrade/restart
/datum/design/item/prosfab/robot_upgrade/vtec
name = "VTEC module"
name = "VTEC Module"
desc = "Used to kick in a robot's VTEC systems, increasing their speed."
id = "borg_vtec_module"
materials = list(DEFAULT_WALL_MATERIAL = 60000, "glass" = 4500, "gold" = 3750)
build_path = /obj/item/borg/upgrade/vtec
/datum/design/item/prosfab/robot_upgrade/tasercooler
name = "Rapid taser cooling module"
name = "Rapid Taser Cooling Module"
desc = "Used to cool a mounted taser, increasing the potential current in it and thus its recharge rate."
id = "borg_taser_module"
materials = list(DEFAULT_WALL_MATERIAL = 60000, "glass" = 4500, "gold" = 1500, "diamond" = 375)
build_path = /obj/item/borg/upgrade/tasercooler
/datum/design/item/prosfab/robot_upgrade/jetpack
name = "Jetpack module"
name = "Jetpack Module"
desc = "A carbon dioxide jetpack suitable for low-gravity mining operations."
id = "borg_jetpack_module"
materials = list(DEFAULT_WALL_MATERIAL = 7500, "phoron" = 11250, "uranium" = 15000)
build_path = /obj/item/borg/upgrade/jetpack
/datum/design/item/prosfab/robot_upgrade/syndicate
name = "Scrambled equipment module"
name = "Scrambled Equipment Module"
desc = "Allows for the construction of lethal upgrades for cyborgs."
id = "borg_syndicate_module"
req_tech = list(TECH_COMBAT = 4, TECH_ILLEGAL = 3)
@@ -338,7 +341,7 @@
build_path = /obj/item/borg/upgrade/syndicate
/datum/design/item/prosfab/robot_upgrade/language
name = "language module"
name = "Language Module"
desc = "Used to let cyborgs other than clerical or service speak a variety of languages."
id = "borg_language_module"
req_tech = list(TECH_DATA = 6, TECH_MATERIAL = 6)

View File

@@ -0,0 +1,4 @@
author: PrismaticGynoid
delete-after: True
changes:
- tweak: "Adjusts the amount of camera locations the AI can store from 10 to 30."

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 36 KiB

View File

@@ -11,5 +11,5 @@
name = "rifle cabinet"
will_contain = list(
/obj/item/weapon/gun/projectile/shotgun/pump/rifle = 3,
/obj/item/ammo_magazine/clip/c762 = 9
/obj/item/ammo_magazine/clip/c762/hunter = 9
)

View File

@@ -26,7 +26,7 @@ Used In File(s): \code\game\machinery\computer\crew.dm
{{else value.sensor_type == 2}}
<tr><td>{{:value.name}} ({{:value.assignment}})</td><td class='living'>{{:value.dead ? "<span class='bad'>Deceased</span>" : "<span class='good'>Living</span>"}} (<span class="oxyloss">{{:value.oxy}}</span>/<span class="toxin">{{:value.tox}}</span>/<span class="burn">{{:value.fire}}</span>/<span class="brute">{{:value.brute}}</span>)</td><td><span class="neutral">Not Available</td></td>{{if data.isAI}}<td class='tracking'>{{:helper.link('Track', null, {}, 'disabled')}}</td>{{/if}}</tr>
{{else value.sensor_type == 3}}
<tr><td>{{:value.name}} ({{:value.assignment}})</td><td class='living'>{{:value.dead ? "<span class='bad'>Deceased</span>" : "<span class='good'>Living</span>"}} (<span class="oxyloss">{{:value.oxy}}</span>/<span class="toxin">{{:value.tox}}</span>/<span class="burn">{{:value.fire}}</span>/<span class="brute">{{:value.brute}}</span>)</td><td>{{:value.area}}({{:value.x}}, {{:value.y}})</td>{{if data.isAI}}<td class='tracking'>{{:helper.link('Track', null, {'track' : value.ref})}}</td>{{/if}}</tr>
<tr><td>{{:value.name}} ({{:value.assignment}})</td><td class='living'>{{:value.dead ? "<span class='bad'>Deceased</span>" : "<span class='good'>Living</span>"}} (<span class="oxyloss">{{:value.oxy}}</span>/<span class="toxin">{{:value.tox}}</span>/<span class="burn">{{:value.fire}}</span>/<span class="brute">{{:value.brute}}</span>)</td><td>{{:value.area}}({{:value.x}}, {{:value.y}}, {{:value.z}})</td>{{if data.isAI}}<td class='tracking'>{{:helper.link('Track', null, {'track' : value.ref})}}</td>{{/if}}</tr>
{{/if}}
{{/for}}
</tbody></table>

View File

@@ -616,6 +616,7 @@
#include "code\game\machinery\supplybeacon.dm"
#include "code\game\machinery\syndicatebeacon.dm"
#include "code\game\machinery\teleporter.dm"
#include "code\game\machinery\transportpod.dm"
#include "code\game\machinery\turret_control.dm"
#include "code\game\machinery\vending.dm"
#include "code\game\machinery\vr_console.dm"