mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-21 03:56:47 +01:00
Merge remote-tracking branch 'upstream/dev-freeze' into dev
This commit is contained in:
@@ -64,10 +64,9 @@
|
||||
/datum/alarm_handler/proc/on_alarm_change(var/datum/alarm/alarm, var/was_raised)
|
||||
for(var/obj/machinery/camera/C in alarm.cameras())
|
||||
if(was_raised)
|
||||
C.network.Add(category)
|
||||
invalidateCameraCache()
|
||||
C.add_network(category)
|
||||
else
|
||||
C.network.Remove(category)
|
||||
C.remove_network(category)
|
||||
notify_listeners(alarm, was_raised)
|
||||
|
||||
/datum/alarm_handler/proc/get_alarm_severity_for_origin(var/atom/origin)
|
||||
|
||||
@@ -120,7 +120,7 @@
|
||||
|
||||
|
||||
Topic(href, href_list)
|
||||
..()
|
||||
if(..()) return 1
|
||||
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
|
||||
usr << browse(null, "window=infra")
|
||||
onclose(usr, "infra")
|
||||
|
||||
@@ -129,7 +129,7 @@
|
||||
|
||||
|
||||
Topic(href, href_list)
|
||||
..()
|
||||
if(..()) return 1
|
||||
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
|
||||
usr << browse(null, "window=prox")
|
||||
onclose(usr, "prox")
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
|
||||
|
||||
Topic(href, href_list)
|
||||
..()
|
||||
if(..()) return 1
|
||||
|
||||
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
|
||||
usr << browse(null, "window=radio")
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
|
||||
|
||||
Topic(href, href_list)
|
||||
..()
|
||||
if(..()) return 1
|
||||
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
|
||||
usr << browse(null, "window=timer")
|
||||
onclose(usr, "timer")
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
icon_action_button = "[icon_state]"
|
||||
|
||||
camera = new /obj/machinery/camera(src)
|
||||
camera.network = camera_networks
|
||||
camera.replace_networks(camera_networks)
|
||||
cameranet.removeCamera(camera)
|
||||
camera.c_tag = user.name
|
||||
user << "\blue User scanned as [camera.c_tag]. Camera activated."
|
||||
|
||||
@@ -264,7 +264,7 @@
|
||||
|
||||
/obj/item/clothing/suit/storage/vest/officer
|
||||
name = "officer armor vest"
|
||||
desc = "A simple kevlar plate carrier beloning to Nanotrasen. This one has a security holobadge clipped to the chest."
|
||||
desc = "A simple kevlar plate carrier belonging to Nanotrasen. This one has a security holobadge clipped to the chest."
|
||||
icon_state = "officervest_nobadge"
|
||||
item_state = "officervest_nobadge"
|
||||
icon_badge = "officervest_badge"
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
user.drop_from_inventory(holstered)
|
||||
holstered.loc = src
|
||||
holstered.add_fingerprint(user)
|
||||
w_class = max(w_class, holstered.w_class)
|
||||
user.visible_message("<span class='notice'>[user] holsters \the [holstered].</span>", "<span class='notice'>You holster \the [holstered].</span>")
|
||||
|
||||
/obj/item/clothing/accessory/holster/proc/unholster(mob/user as mob)
|
||||
@@ -41,6 +42,7 @@
|
||||
user.put_in_hands(holstered)
|
||||
holstered.add_fingerprint(user)
|
||||
holstered = null
|
||||
w_class = initial(w_class)
|
||||
|
||||
/obj/item/clothing/accessory/holster/attack_hand(mob/user as mob)
|
||||
if (has_suit) //if we are part of a suit
|
||||
|
||||
@@ -76,11 +76,11 @@
|
||||
/obj/item/clothing/accessory/storage/knifeharness/New()
|
||||
..()
|
||||
hold.max_combined_w_class = 4
|
||||
hold.can_hold = list("/obj/item/weapon/hatchet/unathiknife",\
|
||||
"/obj/item/weapon/kitchen/utensil/knife",\
|
||||
"/obj/item/weapon/kitchen/utensil/pknife",\
|
||||
"/obj/item/weapon/kitchenknife",\
|
||||
"/obj/item/weapon/kitchenknife/ritual")
|
||||
hold.can_hold = list(/obj/item/weapon/hatchet/unathiknife,\
|
||||
/obj/item/weapon/kitchen/utensil/knife,\
|
||||
/obj/item/weapon/kitchen/utensil/pknife,\
|
||||
/obj/item/weapon/kitchenknife,\
|
||||
/obj/item/weapon/kitchenknife/ritual)
|
||||
|
||||
new /obj/item/weapon/hatchet/unathiknife(hold)
|
||||
new /obj/item/weapon/hatchet/unathiknife(hold)
|
||||
@@ -213,6 +213,7 @@
|
||||
onclose(user,"fscanner")
|
||||
|
||||
/obj/machinery/computer/forensic_scanning/Topic(href,href_list)
|
||||
if(..()) return 1
|
||||
switch(href_list["operation"])
|
||||
if("login")
|
||||
var/mob/M = usr
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
var/description_fluff = null //Green text about the atom's fluff, if any exists.
|
||||
var/description_antag = null //Malicious red text, for the antags.
|
||||
|
||||
/atom/examine(mob/user)
|
||||
..()
|
||||
/atom/examine(mob/user, var/distance = -1, var/infix = "", var/suffix = "")
|
||||
. = ..()
|
||||
user.description_holders["info"] = get_description_info()
|
||||
user.description_holders["fluff"] = get_description_fluff()
|
||||
if(user.mind && user.mind.special_role || isobserver(user)) //Runtime prevention, as ghosts don't have minds.
|
||||
|
||||
@@ -342,7 +342,7 @@ var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/projectile, /obj/ite
|
||||
/obj/item/weapon/storage/toolbox/syndicate, /obj/item/weapon/aiModule,\
|
||||
/obj/item/device/radio/headset/syndicate, /obj/item/weapon/plastique,\
|
||||
/obj/item/device/powersink, /obj/item/weapon/storage/box/syndie_kit,\
|
||||
/obj/item/toy/syndicateballoon, /obj/item/weapon/gun/energy/laser/captain,\
|
||||
/obj/item/toy/syndicateballoon, /obj/item/weapon/gun/energy/captain,\
|
||||
/obj/item/weapon/hand_tele, /obj/item/weapon/rcd, /obj/item/weapon/tank/jetpack,\
|
||||
/obj/item/clothing/under/rank/captain, /obj/item/device/aicard,\
|
||||
/obj/item/clothing/shoes/magboots, /obj/item/blueprints, /obj/item/weapon/disk/nuclear,\
|
||||
|
||||
@@ -106,7 +106,7 @@ var/global/list/holodeck_programs = list(
|
||||
|
||||
/obj/machinery/computer/HolodeckControl/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
return 1
|
||||
if((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
|
||||
usr.set_machine(src)
|
||||
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
|
||||
/obj/machinery/mineral/processing_unit_console/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
return 1
|
||||
usr.set_machine(src)
|
||||
src.add_fingerprint(usr)
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
|
||||
/obj/machinery/mineral/stacking_unit_console/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
return 1
|
||||
|
||||
if(href_list["change_stack"])
|
||||
var/choice = input("What would you like to set the stack amount to?") as null|anything in list(1,5,10,20,50)
|
||||
|
||||
@@ -116,7 +116,7 @@
|
||||
|
||||
/obj/machinery/mineral/mint/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
return 1
|
||||
usr.set_machine(src)
|
||||
src.add_fingerprint(usr)
|
||||
if(processing==1)
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
|
||||
/obj/item/weapon/moneybag/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
return 1
|
||||
usr.set_machine(src)
|
||||
src.add_fingerprint(usr)
|
||||
if(href_list["remove"])
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
if(istype(w_uniform,/obj/item/clothing/under))
|
||||
var/obj/item/clothing/under/U = w_uniform
|
||||
if(U.accessories.len)
|
||||
tie_msg += " with [lowertext(english_list(U.accessories))]"
|
||||
tie_msg += ". Attached to it is [lowertext(english_list(U.accessories))]"
|
||||
|
||||
if(w_uniform.blood_DNA)
|
||||
msg += "<span class='warning'>[t_He] [t_is] wearing \icon[w_uniform] [w_uniform.gender==PLURAL?"some":"a"] [(w_uniform.blood_color != "#030303") ? "blood" : "oil"]-stained [w_uniform.name][tie_msg]!</span>\n"
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
add_language("Drone Talk", 1)
|
||||
|
||||
if(camera && "Robots" in camera.network)
|
||||
camera.network.Add("Engineering")
|
||||
camera.add_network("Engineering")
|
||||
|
||||
//They are unable to be upgraded, so let's give them a bit of a better battery.
|
||||
cell.maxcharge = 10000
|
||||
@@ -287,5 +287,7 @@
|
||||
return
|
||||
|
||||
/mob/living/silicon/robot/drone/add_robot_verbs()
|
||||
src.verbs |= robot_verbs_subsystems
|
||||
|
||||
/mob/living/silicon/robot/drone/remove_robot_verbs()
|
||||
src.verbs -= robot_verbs_subsystems
|
||||
|
||||
@@ -125,7 +125,7 @@ var/list/robot_verbs_default = list(
|
||||
if(!scrambledcodes && !camera)
|
||||
camera = new /obj/machinery/camera(src)
|
||||
camera.c_tag = real_name
|
||||
camera.network = list("SS13","Robots")
|
||||
camera.replace_networks(list("SS13","Robots"))
|
||||
if(wires.IsIndexCut(BORG_WIRE_CAMERA))
|
||||
camera.status = 0
|
||||
|
||||
@@ -275,7 +275,7 @@ var/list/robot_verbs_default = list(
|
||||
module = new /obj/item/weapon/robot_module/miner(src)
|
||||
module.channels = list("Supply" = 1)
|
||||
if(camera && "Robots" in camera.network)
|
||||
camera.network.Add("MINE")
|
||||
camera.add_network("MINE")
|
||||
module_sprites["Basic"] = "Miner_old"
|
||||
module_sprites["Advanced Droid"] = "droid-miner"
|
||||
module_sprites["Treadhead"] = "Miner"
|
||||
@@ -285,7 +285,7 @@ var/list/robot_verbs_default = list(
|
||||
module = new /obj/item/weapon/robot_module/crisis(src)
|
||||
module.channels = list("Medical" = 1)
|
||||
if(camera && "Robots" in camera.network)
|
||||
camera.network.Add("Medical")
|
||||
camera.add_network("Medical")
|
||||
module_sprites["Basic"] = "Medbot"
|
||||
module_sprites["Standard"] = "surgeon"
|
||||
module_sprites["Advanced Droid"] = "droid-medical"
|
||||
@@ -296,7 +296,7 @@ var/list/robot_verbs_default = list(
|
||||
module = new /obj/item/weapon/robot_module/surgeon(src)
|
||||
module.channels = list("Medical" = 1)
|
||||
if(camera && "Robots" in camera.network)
|
||||
camera.network.Add("Medical")
|
||||
camera.add_network("Medical")
|
||||
|
||||
module_sprites["Basic"] = "Medbot"
|
||||
module_sprites["Standard"] = "surgeon"
|
||||
@@ -318,7 +318,7 @@ var/list/robot_verbs_default = list(
|
||||
module = new /obj/item/weapon/robot_module/engineering(src)
|
||||
module.channels = list("Engineering" = 1)
|
||||
if(camera && "Robots" in camera.network)
|
||||
camera.network.Add("Engineering")
|
||||
camera.add_network("Engineering")
|
||||
module_sprites["Basic"] = "Engineering"
|
||||
module_sprites["Antique"] = "engineerrobot"
|
||||
module_sprites["Landmate"] = "landmate"
|
||||
@@ -329,7 +329,7 @@ var/list/robot_verbs_default = list(
|
||||
module = new /obj/item/weapon/robot_module/construction(src)
|
||||
module.channels = list("Engineering" = 1)
|
||||
if(camera && "Robots" in camera.network)
|
||||
camera.network.Add("Engineering")
|
||||
camera.add_network("Engineering")
|
||||
module_sprites["Basic"] = "Engineering"
|
||||
module_sprites["Antique"] = "engineerrobot"
|
||||
module_sprites["Landmate"] = "landmate"
|
||||
@@ -1142,7 +1142,7 @@ var/list/robot_verbs_default = list(
|
||||
scrambledcodes = 1
|
||||
//Disconnect it's camera so it's not so easily tracked.
|
||||
if(src.camera)
|
||||
src.camera.network = list()
|
||||
src.camera.clear_all_networks()
|
||||
cameranet.removeCamera(src.camera)
|
||||
|
||||
|
||||
|
||||
@@ -323,11 +323,13 @@
|
||||
if(next_alarm_notice && (world.time > next_alarm_notice))
|
||||
next_alarm_notice = 0
|
||||
|
||||
var/alarm_raised = 0
|
||||
for(var/datum/alarm_handler/AH in queued_alarms)
|
||||
var/list/alarms = queued_alarms[AH]
|
||||
var/reported = 0
|
||||
for(var/datum/alarm/A in alarms)
|
||||
if(alarms[A] == 1)
|
||||
alarm_raised = 1
|
||||
if(!reported)
|
||||
reported = 1
|
||||
src << "<span class='warning'>--- [AH.category] Detected ---</span>"
|
||||
@@ -343,6 +345,9 @@
|
||||
src << "<span class='notice'>--- [AH.category] Cleared ---</span>"
|
||||
src << "\The [A.alarm_name()]."
|
||||
|
||||
if(alarm_raised)
|
||||
src << "<A HREF=?src=\ref[src];showalerts=1>\[Show Alerts\]</A>"
|
||||
|
||||
for(var/datum/alarm_handler/AH in queued_alarms)
|
||||
var/list/alarms = queued_alarms[AH]
|
||||
alarms.Cut()
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
radio = new /obj/item/device/radio/borg(src)
|
||||
camera = new /obj/machinery/camera(src)
|
||||
camera.c_tag = "Spiderbot-[real_name]"
|
||||
camera.network = list("SS13")
|
||||
camera.replace_networks(list("SS13"))
|
||||
|
||||
..()
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
|
||||
/obj/machinery/computer/engines/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
return 1
|
||||
|
||||
if(href_list["state"])
|
||||
state = href_list["state"]
|
||||
|
||||
@@ -110,7 +110,7 @@
|
||||
|
||||
/obj/machinery/computer/helm/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
return 1
|
||||
|
||||
if (!linked)
|
||||
return
|
||||
|
||||
@@ -113,7 +113,7 @@
|
||||
|
||||
/obj/machinery/computer/shuttle_control/explore/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
return 1
|
||||
|
||||
usr.set_machine(src)
|
||||
src.add_fingerprint(usr)
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/a556
|
||||
name = "magazine (5.56)"
|
||||
name = "magazine (5.56mm)"
|
||||
icon_state = "5.56"
|
||||
origin_tech = "combat=2"
|
||||
mag_type = MAGAZINE
|
||||
|
||||
@@ -6,12 +6,11 @@
|
||||
fire_sound = 'sound/weapons/Laser.ogg'
|
||||
slot_flags = SLOT_BELT|SLOT_BACK
|
||||
w_class = 3
|
||||
force = 10 //it has a stock, might as well give some kind of perk over the egun
|
||||
force = 10
|
||||
matter = list("metal" = 2000)
|
||||
origin_tech = "combat=3;magnets=2"
|
||||
projectile_type = /obj/item/projectile/beam
|
||||
charge_cost = 75
|
||||
fire_delay = 1
|
||||
fire_delay = 1 //rapid fire
|
||||
|
||||
/obj/item/weapon/gun/energy/laser/mounted
|
||||
self_recharge = 1
|
||||
@@ -22,21 +21,29 @@
|
||||
desc = "A modified version of the basic laser gun, this one fires less concentrated energy bolts designed for target practice."
|
||||
projectile_type = /obj/item/projectile/beam/practice
|
||||
|
||||
obj/item/weapon/gun/energy/laser/retro
|
||||
obj/item/weapon/gun/energy/retro
|
||||
name = "retro laser"
|
||||
icon_state = "retro"
|
||||
desc = "An older model of the basic lasergun, no longer used by Nanotrasen's security or military forces. Nevertheless, it is still quite deadly and easy to maintain, making it a favorite amongst pirates and other outlaws."
|
||||
fire_sound = 'sound/weapons/Laser.ogg'
|
||||
slot_flags = SLOT_BELT
|
||||
w_class = 3
|
||||
projectile_type = /obj/item/projectile/beam
|
||||
fire_delay = 10
|
||||
|
||||
/obj/item/weapon/gun/energy/captain
|
||||
name = "antique laser gun"
|
||||
icon_state = "caplaser"
|
||||
desc = "This is an antique laser gun. All craftsmanship is of the highest quality. It is decorated with assistant leather and chrome. The object menaces with spikes of energy. On the item is an image of Space Station 13. The station is exploding."
|
||||
force = 5
|
||||
fire_sound = 'sound/weapons/Laser.ogg'
|
||||
slot_flags = SLOT_BELT
|
||||
w_class = 3
|
||||
projectile_type = /obj/item/projectile/beam
|
||||
origin_tech = null
|
||||
charge_cost = 200 //to compensate a bit for self-recharging
|
||||
self_recharge = 1
|
||||
|
||||
|
||||
/obj/item/weapon/gun/energy/lasercannon
|
||||
name = "laser cannon"
|
||||
desc = "With the laser cannon, the lasing medium is enclosed in a tube lined with uranium-235 and subjected to high neutron flux in a nuclear reactor core. This incredible technology may help YOU achieve high excitation rates with small laser volumes!"
|
||||
@@ -62,6 +69,7 @@ obj/item/weapon/gun/energy/laser/retro
|
||||
origin_tech = "combat=5;materials=3;magnets=2;syndicate=2"
|
||||
projectile_type = /obj/item/projectile/beam/xray
|
||||
charge_cost = 50
|
||||
fire_delay = 1
|
||||
|
||||
/obj/item/weapon/gun/energy/sniperrifle
|
||||
name = "\improper L.W.A.P. sniper rifle"
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
/obj/item/weapon/gun/energy/temperature/Topic(href, href_list)
|
||||
if (..())
|
||||
return
|
||||
return 1
|
||||
usr.set_machine(src)
|
||||
src.add_fingerprint(usr)
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/obj/item/weapon/gun/launcher/grenade
|
||||
name = "grenade launcher"
|
||||
desc = "A bulky pump-action grenade launcher. Holds up to 5 grenades in a revolving magazine."
|
||||
desc = "A bulky pump-action grenade launcher. Holds up to 6 grenades in a revolving magazine."
|
||||
icon_state = "riotgun"
|
||||
item_state = "riotgun"
|
||||
w_class = 4
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
var/obj/item/weapon/grenade/chambered
|
||||
var/list/grenades = new/list()
|
||||
var/max_grenades = 4 //holds this + one in the chamber
|
||||
var/max_grenades = 5 //holds this + one in the chamber
|
||||
matter = list("metal" = 2000)
|
||||
|
||||
//revolves the magazine, allowing players to choose between multiple grenade types
|
||||
@@ -42,30 +42,36 @@
|
||||
if(chambered)
|
||||
user << "\A [chambered] is chambered."
|
||||
|
||||
/obj/item/weapon/gun/launcher/grenade/proc/load(obj/item/weapon/grenade/G, mob/user)
|
||||
if(grenades.len >= max_grenades)
|
||||
user << "<span class='warning'>[src] is full.</span>"
|
||||
return
|
||||
user.remove_from_mob(G)
|
||||
G.loc = src
|
||||
grenades.Insert(1, G) //add to the head of the list, so that it is loaded on the next pump
|
||||
user.visible_message("[user] inserts \a [G] into [src].", "<span class='notice'>You insert \a [G] into [src].</span>")
|
||||
|
||||
/obj/item/weapon/gun/launcher/grenade/proc/unload(mob/user)
|
||||
if(grenades.len)
|
||||
var/obj/item/weapon/grenade/G = grenades[grenades.len]
|
||||
grenades.len--
|
||||
user.put_in_hands(G)
|
||||
user.visible_message("[user] removes \a [G] from [src].", "<span class='notice'>You remove \a [G] from [src].</span>")
|
||||
else
|
||||
user << "<span class='warning'>[src] is empty.</span>"
|
||||
|
||||
/obj/item/weapon/gun/launcher/grenade/attack_self(mob/user)
|
||||
pump(user)
|
||||
|
||||
/obj/item/weapon/gun/launcher/grenade/attackby(obj/item/I, mob/user)
|
||||
if((istype(I, /obj/item/weapon/grenade)))
|
||||
if(grenades.len >= max_grenades)
|
||||
user << "<span class='warning'>[src] is full.</span>"
|
||||
return
|
||||
user.remove_from_mob(I)
|
||||
I.loc = src
|
||||
grenades.Insert(1, I) //add to the head of the list, so that it is loaded on the next pump
|
||||
user.visible_message("[user] inserts \a [I] into [src].", "<span class='notice'>You insert \a [I] into [src].</span>")
|
||||
load(I, user)
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/weapon/gun/launcher/grenade/attack_hand(mob/user)
|
||||
if(user.get_inactive_hand() == src)
|
||||
if(grenades.len)
|
||||
var/obj/item/weapon/grenade/G = grenades[grenades.len]
|
||||
grenades.len--
|
||||
user.put_in_hands(G)
|
||||
user.visible_message("[user] removes \a [G] from [src].", "<span class='notice'>You remove \a [G] from [src].</span>")
|
||||
else
|
||||
user << "<span class='warning'>[src] is empty.</span>"
|
||||
unload(user)
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -79,3 +85,32 @@
|
||||
message_admins("[key_name_admin(user)] fired a grenade ([chambered.name]) from a grenade launcher ([src.name]).")
|
||||
log_game("[key_name_admin(user)] used a grenade ([chambered.name]).")
|
||||
chambered = null
|
||||
|
||||
//Underslung grenade launcher to be used with the Z8
|
||||
/obj/item/weapon/gun/launcher/grenade/underslung
|
||||
name = "underslung grenade launcher"
|
||||
desc = "Not much more than a tube and a firing mechanism, this grenade launcher is designed to be fitted to a rifle."
|
||||
w_class = 3
|
||||
force = 5
|
||||
max_grenades = 0
|
||||
|
||||
/obj/item/weapon/gun/launcher/grenade/underslung/attack_self()
|
||||
return
|
||||
|
||||
//load and unload directly into chambered
|
||||
/obj/item/weapon/gun/launcher/grenade/underslung/load(obj/item/weapon/grenade/G, mob/user)
|
||||
if(chambered)
|
||||
user << "<span class='warning'>[src] is already loaded.</span>"
|
||||
return
|
||||
user.remove_from_mob(G)
|
||||
G.loc = src
|
||||
chambered = G
|
||||
user.visible_message("[user] load \a [G] into [src].", "<span class='notice'>You load \a [G] into [src].</span>")
|
||||
|
||||
/obj/item/weapon/gun/launcher/grenade/underslung/unload(mob/user)
|
||||
if(chambered)
|
||||
user.put_in_hands(chambered)
|
||||
user.visible_message("[user] removes \a [chambered] from [src].", "<span class='notice'>You remove \a [chambered] from [src].</span>")
|
||||
chambered = null
|
||||
else
|
||||
user << "<span class='warning'>[src] is empty.</span>"
|
||||
@@ -47,6 +47,23 @@
|
||||
icon_state = "c20r"
|
||||
return
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/sts35
|
||||
name = "\improper STS-35 automatic rifle"
|
||||
desc = "A durable, rugged looking automatic weapon of a make popular on the frontier worlds. Uses 7.62mm rounds. It is unmarked."
|
||||
icon_state = "arifle"
|
||||
item_state = "shotgun"
|
||||
w_class = 4
|
||||
force = 10
|
||||
caliber = "a762"
|
||||
origin_tech = "combat=6;materials=1;syndicate=4"
|
||||
slot_flags = SLOT_BACK
|
||||
load_method = MAGAZINE
|
||||
magazine_type = /obj/item/ammo_magazine/c762
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/sts35/update_icon()
|
||||
..()
|
||||
icon_state = (ammo_magazine)? "arifle-0" : "arifle"
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/wt550
|
||||
name = "\improper W-T 550 Saber"
|
||||
desc = "A cheap, mass produced Ward-Takahashi PDW. Uses 9mm rounds."
|
||||
@@ -70,7 +87,7 @@
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/z8
|
||||
name = "\improper Z8 Bulldog"
|
||||
desc = "An older model bullpup carbine, made by the now defunct Zendai Foundries. Uses armor piercing 5.56mm rounds. Makes you feel like a space marine when you hold it."
|
||||
desc = "An older model bullpup carbine, made by the now defunct Zendai Foundries. Uses armor piercing 5.56mm rounds and has an underslung grenade launcher. Makes you feel like a space marine when you hold it."
|
||||
icon_state = "carbine"
|
||||
item_state = "shotgun"
|
||||
w_class = 4
|
||||
@@ -82,6 +99,37 @@
|
||||
slot_flags = SLOT_BACK
|
||||
load_method = MAGAZINE
|
||||
magazine_type = /obj/item/ammo_magazine/a556
|
||||
auto_eject = 1
|
||||
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
|
||||
|
||||
var/use_launcher = 0
|
||||
var/obj/item/weapon/gun/launcher/grenade/underslung/launcher
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/z8/New()
|
||||
..()
|
||||
launcher = new(src)
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/z8/attack_self(mob/user)
|
||||
use_launcher = !use_launcher
|
||||
user << "<span class='notice'>You switch to [use_launcher? "\the [launcher]" : "firing normally"].</span>"
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/z8/attackby(obj/item/I, mob/user)
|
||||
if((istype(I, /obj/item/weapon/grenade)))
|
||||
launcher.load(I, user)
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/z8/attack_hand(mob/user)
|
||||
if(user.get_inactive_hand() == src && use_launcher)
|
||||
launcher.unload(user)
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/z8/Fire(atom/target, mob/living/user, params, pointblank=0, reflex=0)
|
||||
if(use_launcher)
|
||||
launcher.Fire(target, user, params, pointblank, reflex)
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/z8/update_icon()
|
||||
..()
|
||||
@@ -91,22 +139,12 @@
|
||||
icon_state = "carbine"
|
||||
return
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/sts35
|
||||
name = "\improper STS-35 automatic rifle"
|
||||
desc = "A durable, rugged looking automatic weapon of a make popular on the frontier. Uses 7.62mm rounds. It is unmarked."
|
||||
icon_state = "assltrifle"
|
||||
item_state = "shotgun"
|
||||
w_class = 4
|
||||
force = 10
|
||||
caliber = "a762"
|
||||
origin_tech = "combat=6;materials=1;syndicate=4"
|
||||
slot_flags = SLOT_BACK
|
||||
load_method = MAGAZINE
|
||||
magazine_type = /obj/item/ammo_magazine/c762
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/sts35/update_icon()
|
||||
/obj/item/weapon/gun/projectile/automatic/z8/examine(mob/user)
|
||||
..()
|
||||
icon_state = (ammo_magazine)? "assltrifle" : "assltrifle-noclip"
|
||||
if(launcher.chambered)
|
||||
user << "\The [launcher] has \a [launcher.chambered] loaded."
|
||||
else
|
||||
user << "\The [launcher] is empty."
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/l6_saw
|
||||
name = "\improper L6 SAW"
|
||||
|
||||
@@ -165,6 +165,7 @@
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/gun/projectile/dartgun/Topic(href, href_list)
|
||||
if(..()) return 1
|
||||
src.add_fingerprint(usr)
|
||||
if(href_list["stop_mix"])
|
||||
var/index = text2num(href_list["stop_mix"])
|
||||
|
||||
@@ -7,11 +7,6 @@
|
||||
origin_tech = "combat=2;materials=2"
|
||||
load_method = MAGAZINE
|
||||
|
||||
/obj/item/weapon/gun/projectile/colt/flash
|
||||
name = "\improper Colt M1911 signal pistol"
|
||||
desc = "A cheap Martian knock-off of a Colt M1911. Uses .45 signal flash rounds."
|
||||
magazine_type = /obj/item/ammo_magazine/c45m/flash
|
||||
|
||||
/obj/item/weapon/gun/projectile/colt/detective
|
||||
desc = "A cheap Martian knock-off of a Colt M1911. Uses less-than-lethal .45 rounds."
|
||||
magazine_type = /obj/item/ammo_magazine/c45m/rubber
|
||||
@@ -35,14 +30,18 @@
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/gun/projectile/sec
|
||||
desc = "A Nanotrasen designed sidearm, found pretty much everywhere humans are. Uses less-than-lethal .45 rounds."
|
||||
desc = "A NanoTrasen designed sidearm, found pretty much everywhere humans are. Uses less-than-lethal .45 rounds."
|
||||
name = "\improper NT Mk58"
|
||||
icon_state = "secguncomp"
|
||||
magazine_type = /obj/item/ammo_magazine/c45m/rubber
|
||||
caliber = ".45"
|
||||
origin_tech = "combat=3;materials=2"
|
||||
origin_tech = "combat=2;materials=2"
|
||||
load_method = MAGAZINE
|
||||
|
||||
/obj/item/weapon/gun/projectile/sec/flash
|
||||
name = "\improper NT Mk58 signal pistol"
|
||||
desc = "A NanoTrasen designed sidearm, found pretty much everywhere humans are. Uses .45 signal flash rounds."
|
||||
magazine_type = /obj/item/ammo_magazine/c45m/flash
|
||||
|
||||
/obj/item/weapon/gun/projectile/sec/wood
|
||||
desc = "A Nanotrasen designed sidearm, this one has a sweet wooden grip. Uses less-than-lethal .45 rounds."
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
name = "combat shotgun"
|
||||
icon_state = "cshotgun"
|
||||
origin_tech = "combat=5;materials=2"
|
||||
max_shells = 8
|
||||
max_shells = 7 //match the ammo box capacity, also it can hold a round in the chamber anyways, for a total of 8.
|
||||
ammo_type = /obj/item/ammo_casing/shotgun
|
||||
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
mob_passthrough_check = 1
|
||||
else
|
||||
mob_passthrough_check = 0
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/projectile/bullet/can_embed()
|
||||
//prevent embedding if the projectile is passing through the mob
|
||||
@@ -43,10 +43,10 @@
|
||||
var/chance = 0
|
||||
if(istype(A, /turf/simulated/wall))
|
||||
var/turf/simulated/wall/W = A
|
||||
chance = round(damage/W.damage_cap*250)
|
||||
chance = round(damage/W.damage_cap*180)
|
||||
else if(istype(A, /obj/machinery/door))
|
||||
var/obj/machinery/door/D = A
|
||||
chance = round(damage/D.maxhealth*150)
|
||||
chance = round(damage/D.maxhealth*180)
|
||||
else if(istype(A, /obj/structure/girder) || istype(A, /obj/structure/cultgirder))
|
||||
chance = 100
|
||||
else if(istype(A, /obj/machinery) || istype(A, /obj/structure))
|
||||
@@ -141,7 +141,7 @@
|
||||
penetrating = 1
|
||||
|
||||
/obj/item/projectile/bullet/rifle/a145
|
||||
damage = 60
|
||||
damage = 80
|
||||
stun = 3
|
||||
weaken = 3
|
||||
penetrating = 5
|
||||
|
||||
@@ -162,7 +162,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
|
||||
/obj/machinery/computer/rdconsole/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
return 1
|
||||
|
||||
add_fingerprint(usr)
|
||||
|
||||
|
||||
@@ -205,7 +205,7 @@
|
||||
|
||||
/obj/machinery/computer/rdservercontrol/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
return 1
|
||||
|
||||
add_fingerprint(usr)
|
||||
usr.set_machine(src)
|
||||
|
||||
@@ -345,7 +345,7 @@
|
||||
/obj/item/weapon/gun/energy/laser/practice/xenoarch,\
|
||||
/obj/item/weapon/gun/energy/laser/xenoarch,\
|
||||
/obj/item/weapon/gun/energy/xray/xenoarch,\
|
||||
/obj/item/weapon/gun/energy/laser/captain/xenoarch)
|
||||
/obj/item/weapon/gun/energy/captain/xenoarch)
|
||||
if(spawn_type)
|
||||
var/obj/item/weapon/gun/energy/new_gun = new spawn_type(src.loc)
|
||||
new_item = new_gun
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/gun/energy/laser/captain/xenoarch
|
||||
/obj/item/weapon/gun/energy/captain/xenoarch
|
||||
icon = 'icons/obj/xenoarchaeology.dmi'
|
||||
update_icon()
|
||||
return
|
||||
return
|
||||
|
||||
@@ -181,6 +181,7 @@ datum/genesequence
|
||||
onclose(user, "reconstitutor")
|
||||
|
||||
/obj/machinery/computer/reconstitutor/animal/Topic(href, href_list)
|
||||
if(..()) return 1
|
||||
if(href_list["clone"])
|
||||
var/sequence_num = text2num(href_list["sequence_num"])
|
||||
var/datum/genesequence/cloned_genesequence = completed_genesequences[sequence_num]
|
||||
@@ -201,10 +202,9 @@ datum/genesequence
|
||||
pod1.biomass -= CLONE_BIOMASS
|
||||
else
|
||||
usr << "\red \icon[src] Unable to locate cloning pod!"
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/machinery/computer/reconstitutor/Topic(href, href_list)
|
||||
if(..()) return 1
|
||||
if(href_list["insertpos"])
|
||||
//world << "inserting gene for genesequence [href_list["insertgenome"]] at pos [text2num(href_list["insertpos"])]"
|
||||
var/sequence_num = text2num(href_list["sequence_num"])
|
||||
@@ -252,9 +252,6 @@ datum/genesequence
|
||||
usr.unset_machine(src)
|
||||
usr << browse(null, "window=reconstitutor")
|
||||
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/machinery/computer/reconstitutor/proc/scan_fossil(var/obj/item/weapon/fossil/scan_fossil)
|
||||
//see whether we accept these kind of fossils
|
||||
if(accepted_fossil_types.len && !accepted_fossil_types.Find(scan_fossil.type))
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
ui.set_auto_update(1)
|
||||
|
||||
/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod/Topic(href, href_list)
|
||||
if(..()) //I hate this "return 1 to indicate they are not allowed to use the controller" crap, but not sure how else to do it without being able to call machinery/Topic() directly.
|
||||
if(..())
|
||||
return 1
|
||||
|
||||
if("manual_arm")
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
|
||||
/obj/machinery/computer/shuttle_control/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
return 1
|
||||
|
||||
usr.set_machine(src)
|
||||
src.add_fingerprint(usr)
|
||||
|
||||
@@ -221,7 +221,7 @@
|
||||
|
||||
/obj/machinery/computer/shuttle_control/emergency/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
return 1
|
||||
|
||||
if(href_list["removeid"])
|
||||
var/dna_hash = href_list["removeid"]
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
|
||||
/obj/machinery/computer/shuttle_control/multi/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
return 1
|
||||
|
||||
usr.set_machine(src)
|
||||
src.add_fingerprint(usr)
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
isolate()
|
||||
|
||||
/obj/machinery/computer/centrifuge/Topic(href, href_list)
|
||||
if (..()) return 0
|
||||
if (..()) return 1
|
||||
|
||||
var/mob/user = usr
|
||||
var/datum/nanoui/ui = nanomanager.get_open_ui(user, src, "main")
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
|
||||
/obj/machinery/computer/curer/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
return 1
|
||||
usr.machine = src
|
||||
|
||||
if (href_list["antibody"])
|
||||
@@ -91,7 +91,6 @@
|
||||
|
||||
src.add_fingerprint(usr)
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/computer/curer/proc/createcure(var/obj/item/weapon/reagent_containers/container)
|
||||
|
||||
@@ -122,7 +122,7 @@
|
||||
nanomanager.update_uis(src)
|
||||
|
||||
/obj/machinery/computer/diseasesplicer/Topic(href, href_list)
|
||||
if(..()) return 0
|
||||
if(..()) return 1
|
||||
|
||||
var/mob/user = usr
|
||||
var/datum/nanoui/ui = nanomanager.get_open_ui(user, src, "main")
|
||||
|
||||
@@ -139,7 +139,7 @@
|
||||
nanomanager.update_uis(src)
|
||||
|
||||
/obj/machinery/disease2/incubator/Topic(href, href_list)
|
||||
if (..()) return 0
|
||||
if (..()) return 1
|
||||
|
||||
var/mob/user = usr
|
||||
var/datum/nanoui/ui = nanomanager.get_open_ui(user, src, "main")
|
||||
|
||||
@@ -120,7 +120,7 @@
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/disease2/isolator/Topic(href, href_list)
|
||||
if (..()) return 0
|
||||
if (..()) return 1
|
||||
|
||||
var/mob/user = usr
|
||||
var/datum/nanoui/ui = nanomanager.get_open_ui(user, src, "main")
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
|
||||
/obj/item/weapon/virusdish/Topic(href, href_list)
|
||||
. = ..()
|
||||
if(.) return
|
||||
if(.) return 1
|
||||
|
||||
if(href_list["info"])
|
||||
usr << browse(info, "window=info_\ref[src]")
|
||||
|
||||
Reference in New Issue
Block a user