mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-14 09:35:30 +01:00
Merge remote-tracking branch 'remotes/upstream/master' into airlock_charge_buff
This commit is contained in:
@@ -1527,7 +1527,6 @@
|
||||
var/client/C = usr.client
|
||||
if(!isobserver(usr)) C.admin_ghost()
|
||||
var/mob/dead/observer/A = C.mob
|
||||
sleep(2)
|
||||
A.ManualFollow(M)
|
||||
log_admin("[key_name(usr)] followed [key_name(M)]")
|
||||
message_admins("[key_name_admin(usr)] followed [key_name_admin(M)]")
|
||||
|
||||
@@ -51,6 +51,10 @@
|
||||
|
||||
/obj/item/weapon/paper/examine(mob/user)
|
||||
..()
|
||||
if(istype(src, /obj/item/weapon/paper/talisman)) //Talismans cannot be read
|
||||
if(!iscultist(user) && !user.stat)
|
||||
user << "<span class='danger'>There are indecipherable images scrawled on the paper in what looks to be... <i>blood?</i></span>"
|
||||
return
|
||||
if(in_range(user, src) || isobserver(user))
|
||||
if( !(ishuman(user) || isobserver(user) || issilicon(user)) )
|
||||
user << browse("<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[stars(info)]<HR>[stamps]</BODY></HTML>", "window=[name]")
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
/obj/item/ammo_casing/proc/fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, params, distro, quiet)
|
||||
/obj/item/ammo_casing/proc/fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, params, distro, quiet, zone_override = "")
|
||||
distro += variance
|
||||
for (var/i = max(1, pellets), i > 0, i--)
|
||||
var/curloc = user.loc
|
||||
var/targloc = get_turf(target)
|
||||
ready_proj(target, user, quiet)
|
||||
ready_proj(target, user, quiet, zone_override)
|
||||
if(distro)
|
||||
targloc = spread(targloc, curloc, distro)
|
||||
if(!throw_proj(targloc, user, params))
|
||||
@@ -15,12 +15,15 @@
|
||||
update_icon()
|
||||
return 1
|
||||
|
||||
/obj/item/ammo_casing/proc/ready_proj(atom/target as mob|obj|turf, mob/living/user, quiet)
|
||||
/obj/item/ammo_casing/proc/ready_proj(atom/target as mob|obj|turf, mob/living/user, quiet, zone_override = "")
|
||||
if (!BB)
|
||||
return
|
||||
BB.original = target
|
||||
BB.firer = user
|
||||
BB.def_zone = user.zone_sel.selecting
|
||||
if (zone_override)
|
||||
BB.def_zone = zone_override
|
||||
else
|
||||
BB.def_zone = user.zone_sel.selecting
|
||||
BB.suppressed = quiet
|
||||
|
||||
if(reagents && BB.reagents)
|
||||
@@ -33,7 +36,7 @@
|
||||
return 0
|
||||
if(targloc == curloc)
|
||||
if(BB.original == user) //if we target ourselves we go straight to bullet_act()
|
||||
user.bullet_act(BB)
|
||||
user.bullet_act(BB, BB.def_zone)
|
||||
qdel(BB)
|
||||
return 1
|
||||
BB.loc = get_turf(user)
|
||||
|
||||
@@ -134,7 +134,8 @@
|
||||
var/mob/living/M = user
|
||||
if (M.disabilities & CLUMSY && prob(40))
|
||||
user << "<span class='userdanger'>You shoot yourself in the foot with \the [src]!</span>"
|
||||
process_fire(user,user,0,params)
|
||||
var/shot_leg = pick("l_leg", "r_leg")
|
||||
process_fire(user,user,0,params, zone_override = shot_leg)
|
||||
M.drop_item()
|
||||
return
|
||||
|
||||
@@ -178,7 +179,7 @@
|
||||
return 0
|
||||
|
||||
|
||||
/obj/item/weapon/gun/proc/process_fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, message = 1, params)
|
||||
/obj/item/weapon/gun/proc/process_fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, message = 1, params, zone_override)
|
||||
add_fingerprint(user)
|
||||
|
||||
if(semicd)
|
||||
@@ -196,7 +197,7 @@
|
||||
if( i>1 && !(src in get_both_hands(user))) //for burst firing
|
||||
break
|
||||
if(chambered)
|
||||
if(!chambered.fire(target, user, params, , suppressed))
|
||||
if(!chambered.fire(target, user, params, , suppressed, zone_override))
|
||||
shoot_with_empty_chamber(user)
|
||||
break
|
||||
else
|
||||
@@ -212,7 +213,7 @@
|
||||
sleep(fire_delay)
|
||||
else
|
||||
if(chambered)
|
||||
if(!chambered.fire(target, user, params, , suppressed))
|
||||
if(!chambered.fire(target, user, params, , suppressed, zone_override))
|
||||
shoot_with_empty_chamber(user)
|
||||
return
|
||||
else
|
||||
@@ -360,4 +361,4 @@
|
||||
if(src && input && !M.stat && in_range(M,src) && !M.restrained() && M.canmove)
|
||||
name = input
|
||||
M << "You name the gun [input]. Say hello to your new friend."
|
||||
return
|
||||
return
|
||||
|
||||
@@ -98,13 +98,14 @@
|
||||
M << "<span class='danger'>You feel a wave of heat wash over you.</span>"
|
||||
M.irradiate(300)
|
||||
fail_state = 2 //break the gun so it stops recharging
|
||||
crit_fail = 1 //So that it may be properly perfected in this state.
|
||||
SSobj.processing.Remove(src)
|
||||
update_icon()
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/gun/energy/gun/nuclear/emp_act(severity)
|
||||
..()
|
||||
reliability -= round(15/severity)
|
||||
reliability = max(reliability - round(15/severity), 0) //Do not allow it to go negative!
|
||||
|
||||
/obj/item/weapon/gun/energy/gun/nuclear/update_icon()
|
||||
..()
|
||||
|
||||
@@ -139,7 +139,7 @@
|
||||
user.visible_message("<span class='suicide'>[user] is putting the barrel of the [src.name] in \his mouth. It looks like \he's trying to commit suicide.</span>")
|
||||
sleep(25)
|
||||
if(user.l_hand == src || user.r_hand == src)
|
||||
process_fire(user, user, 0)
|
||||
process_fire(user, user, 0, zone_override = "head")
|
||||
user.visible_message("<span class='suicide'>[user] blows \his brains out with the [src.name]!</span>")
|
||||
return(BRUTELOSS)
|
||||
else
|
||||
@@ -157,4 +157,4 @@
|
||||
icon_state = "suppressor"
|
||||
w_class = 2
|
||||
var/oldsound = null
|
||||
var/initial_w_class = null
|
||||
var/initial_w_class = null
|
||||
|
||||
@@ -119,6 +119,9 @@
|
||||
can_suppress = 0
|
||||
burst_size = 0
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/wt550/ui_action_click()
|
||||
return
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/wt550/update_icon()
|
||||
..()
|
||||
icon_state = "wt550[magazine ? "-[Ceiling(get_ammo(0)/4)*4]" : ""]"
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
options["The Peacemaker"] = "detective_peacemaker"
|
||||
options["Cancel"] = null
|
||||
|
||||
/obj/item/weapon/gun/projectile/revolver/detective/process_fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, message = 1, params)
|
||||
/obj/item/weapon/gun/projectile/revolver/detective/process_fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, message = 1, params, zone_override = "")
|
||||
if(magazine.caliber != initial(magazine.caliber))
|
||||
if(prob(70 - (magazine.ammo_count() * 10))) //minimum probability of 10, maximum of 60
|
||||
playsound(user, fire_sound, 50, 1)
|
||||
|
||||
@@ -695,6 +695,16 @@
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
/datum/design/borg_upgrade_selfrepair
|
||||
name = "Cyborg Upgrade (Self-repair)"
|
||||
id = "borg_upgrade_selfrepair"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/selfrepair
|
||||
req_tech = list("materials" = 4, "engineering" = 4)
|
||||
materials = list(MAT_METAL=15000, MAT_GLASS=15000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
//Misc
|
||||
/datum/design/mecha_tracking
|
||||
name = "Exosuit Tracking Beacon"
|
||||
|
||||
@@ -190,31 +190,31 @@
|
||||
category = list("Ammo")
|
||||
|
||||
/datum/design/mag_oldsmg/ap_mag
|
||||
name = "Submachine Gun Armour Piercing Magazine (9mmAP)"
|
||||
name = "WT-550 Auto Gun Armour Piercing Magazine (9mmAP)"
|
||||
desc = "A 20 round armour piercing magazine for the out of date security WT-550 Auto Rifle"
|
||||
id = "mag_oldsmg_ap"
|
||||
materials = list(MAT_METAL = 6000, MAG_SILVER = 200)
|
||||
materials = list(MAT_METAL = 6000, MAT_SILVER = 200)
|
||||
build_path = /obj/item/ammo_box/magazine/wt550m9/wtap
|
||||
|
||||
/datum/design/mag_oldsmg/ic_mag
|
||||
name = "Submachine Gun Incindiary Magazine (9mmIC)"
|
||||
name = "WT-550 Auto Gun Incendiary Magazine (9mmIC)"
|
||||
desc = "A 20 round armour piercing magazine for the out of date security WT-550 Auto Rifle"
|
||||
id = "mag_oldsmg_ic"
|
||||
materials = list(MAT_METAL = 6000, MAG_SILVER = 200, MAT_GLASS = 800)
|
||||
materials = list(MAT_METAL = 6000, MAT_SILVER = 200, MAT_GLASS = 800)
|
||||
build_path = /obj/item/ammo_box/magazine/wt550m9/wtic
|
||||
|
||||
/datum/design/mag_oldsmg/tx_mag
|
||||
name = "Submachine Gun Urnaium Magazine (9mmTX)"
|
||||
name = "WT-550 Auto Gun Urnaium Magazine (9mmTX)"
|
||||
desc = "A 20 round urnaium tipped magazine for the out of date security WT-550 Auto Rifle"
|
||||
id = "mag_oldsmg_tx"
|
||||
materials = list(MAT_METAL = 6000, MAG_SILVER = 400, MAG_URNAIUM = 2000)
|
||||
materials = list(MAT_METAL = 6000, MAT_SILVER = 400, MAT_URANIUM = 2000)
|
||||
build_path = /obj/item/ammo_box/magazine/wt550m9/wttx
|
||||
|
||||
//SABR Mags
|
||||
|
||||
/datum/design/mag_smg
|
||||
name = "Submachine Gun Magazine (9mm)"
|
||||
desc = "A 42-round magazine for the prototype submachine gun."
|
||||
name = "SABR SMG Magazine (9mm)"
|
||||
desc = "A 30-round magazine for the prototype submachine gun."
|
||||
id = "mag_smg"
|
||||
req_tech = list("combat" = 4, "materials" = 3)
|
||||
build_type = PROTOLATHE
|
||||
@@ -223,24 +223,24 @@
|
||||
category = list("Ammo")
|
||||
|
||||
/datum/design/mag_smg/ap_mag
|
||||
name = "Submachine Gun Armour Piercing Magazine (9mmAP)"
|
||||
desc = "A 42-round armour piercing magazine for the prototype submachine gun. Deals slightly less damage by bypasses most armour"
|
||||
name = "SABR SMG Armour Piercing Magazine (9mmAP)"
|
||||
desc = "A 30-round armour piercing magazine for the prototype submachine gun. Deals slightly less damage by bypasses most armour"
|
||||
id = "mag_smg_ap"
|
||||
materials = list(MAT_METAL = 3000, MAG_SILVER = 100)
|
||||
materials = list(MAT_METAL = 3000, MAT_SILVER = 100)
|
||||
build_path = /obj/item/ammo_box/magazine/smgm9mm/ap
|
||||
|
||||
/datum/design/mag_smg/incin_mag
|
||||
name = "Submachine Gun Incindiary Magazine (9mmIC)"
|
||||
desc = "A 42-round incindiary round magazine for the prototype submachine gun. Deals significanlty less damage but sets the target on fire"
|
||||
name = "SABR SMG Incendiary Magazine (9mmIC)"
|
||||
desc = "A 30-round incindiary round magazine for the prototype submachine gun. Deals significanlty less damage but sets the target on fire"
|
||||
id = "mag_smg_ic"
|
||||
materials = list(MAT_METAL = 3000, MAG_SILVER = 100, MAT_GLASS = 400)
|
||||
materials = list(MAT_METAL = 3000, MAT_SILVER = 100, MAT_GLASS = 400)
|
||||
build_path = /obj/item/ammo_box/magazine/smgm9mm/fire
|
||||
|
||||
/datum/design/mag_smg/incin_tox
|
||||
name = "Submachine Gun Urnaium Magazine (9mmIC)"
|
||||
desc = "A 42-round urnaium tipped round magazine for the prototype submachine gun. Deals toxin damage, but less overall damage."
|
||||
name = "SABR SMG Urnaium Magazine (9mmTX)"
|
||||
desc = "A 30-round urnaium tipped round magazine for the prototype submachine gun. Deals toxin damage, but less overall damage."
|
||||
id = "mag_smg_tx"
|
||||
materials = list(MAT_METAL = 3000, MAT_GLASS = 200, MAG_URNAIUM = 1000)
|
||||
materials = list(MAT_METAL = 3000, MAT_GLASS = 200, MAT_URANIUM = 1000)
|
||||
build_path = /obj/item/ammo_box/magazine/smgm9mm/toxin
|
||||
|
||||
/datum/design/stunshell
|
||||
|
||||
Reference in New Issue
Block a user