Merge branch 'master' into mirror-38933

This commit is contained in:
kevinz000
2018-07-14 15:26:49 -07:00
committed by GitHub
1555 changed files with 162517 additions and 36374 deletions
@@ -27,7 +27,7 @@
can_suppress = FALSE
/obj/item/gun/ballistic/automatic/pistol/deagle
name = "desert eagle"
name = "\improper Desert Eagle"
desc = "A robust .50 AE handgun."
icon_state = "deagle"
force = 14
@@ -44,7 +44,7 @@
icon_state = "[initial(icon_state)][chambered ? "" : "-e"]"
/obj/item/gun/ballistic/automatic/pistol/deagle/gold
desc = "A gold plated desert eagle folded over a million times by superior martian gunsmiths. Uses .50 AE ammo."
desc = "A gold plated Desert Eagle folded over a million times by superior martian gunsmiths. Uses .50 AE ammo."
icon_state = "deagleg"
item_state = "deagleg"
@@ -55,7 +55,7 @@
/obj/item/gun/ballistic/automatic/pistol/APS
name = "stechkin APS pistol"
desc = "The original russian version of a widely used Syndicate sidearm. Uses 9mm ammo."
desc = "The original Russian version of a widely used Syndicate sidearm. Uses 9mm ammo."
icon_state = "aps"
w_class = WEIGHT_CLASS_SMALL
mag_type = /obj/item/ammo_box/magazine/pistolm9mm
@@ -151,7 +151,7 @@
pin = /obj/item/firing_pin
/obj/item/gun/ballistic/revolver/nagant
name = "nagant revolver"
name = "\improper Nagant revolver"
desc = "An old model of revolver that originated in Russia. Able to be suppressed. Uses 7.62x38mmR ammo."
icon_state = "nagant"
can_suppress = TRUE
@@ -163,7 +163,7 @@
// You can spin the chamber to randomize the position of the bullet.
/obj/item/gun/ballistic/revolver/russian
name = "\improper russian revolver"
name = "\improper Russian revolver"
desc = "A Russian-made revolver for drinking games. Uses .357 ammo, and has a mechanism requiring you to spin the chamber before each trigger pull."
mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rus357
var/spun = FALSE
@@ -233,7 +233,7 @@
user.visible_message("<span class='danger'>[user.name] fires [src] at [user.p_their()] head!</span>", "<span class='userdanger'>You fire [src] at your head!</span>", "<span class='italics'>You hear a gunshot!</span>")
/obj/item/gun/ballistic/revolver/russian/soul
name = "cursed russian revolver"
name = "cursed Russian revolver"
desc = "To play with this revolver requires wagering your very soul."
/obj/item/gun/ballistic/revolver/russian/soul/shoot_self(mob/living/user)
@@ -151,7 +151,8 @@
item_state = "arcane_barrage"
can_bayonet = FALSE
flags_1 = DROPDEL_1
item_flags = NEEDS_PERMIT | DROPDEL
flags_1 = NONE
mag_type = /obj/item/ammo_box/magazine/internal/boltaction/enchanted/arcane_barrage
+11 -7
View File
@@ -22,10 +22,12 @@
var/dead_cell = FALSE //set to true so the gun is given an empty cell
/obj/item/gun/energy/emp_act(severity)
cell.use(round(cell.charge / severity))
chambered = null //we empty the chamber
recharge_newshot() //and try to charge a new shot
update_icon()
. = ..()
if(!(. & EMP_PROTECT_CONTENTS))
cell.use(round(cell.charge / severity))
chambered = null //we empty the chamber
recharge_newshot() //and try to charge a new shot
update_icon()
/obj/item/gun/energy/get_cell()
return cell
@@ -128,6 +130,8 @@
return
/obj/item/gun/energy/update_icon(force_update)
if(QDELETED(src))
return
..()
if(!automatic_charge_overlays)
return
@@ -164,8 +168,8 @@
/obj/item/gun/energy/ui_action_click()
toggle_gunlight()
/obj/item/gun/energy/suicide_act(mob/user)
if (can_shoot() && can_trigger_gun(user))
/obj/item/gun/energy/suicide_act(mob/living/user)
if (istype(user) && can_shoot() && can_trigger_gun(user) && user.get_bodypart(BODY_ZONE_HEAD))
user.visible_message("<span class='suicide'>[user] is putting the barrel of [src] in [user.p_their()] mouth. It looks like [user.p_theyre()] trying to commit suicide!</span>")
sleep(25)
if(user.is_holding(src))
@@ -179,7 +183,7 @@
user.visible_message("<span class='suicide'>[user] panics and starts choking to death!</span>")
return(OXYLOSS)
else
user.visible_message("<span class='suicide'>[user] is pretending to blow [user.p_their()] brains out with [src]! It looks like [user.p_theyre()] trying to commit suicide!</b></span>")
user.visible_message("<span class='suicide'>[user] is pretending to melt [user.p_their()] face off with [src]! It looks like [user.p_theyre()] trying to commit suicide!</b></span>")
playsound(src, "gun_dry_fire", 30, 1)
return (OXYLOSS)
@@ -127,7 +127,9 @@
to_chat(M, "<span class='userdanger'>Your [name]'s reactor overloads!</span>")
/obj/item/gun/energy/e_gun/nuclear/emp_act(severity)
..()
. = ..()
if(. & EMP_PROTECT_SELF)
return
fail_chance = min(fail_chance + round(15/severity), 100)
/obj/item/gun/energy/e_gun/nuclear/update_icon()
@@ -101,8 +101,8 @@
transform *= 1 + ((damage/7) * 0.2)//20% larger per tile
/obj/item/gun/energy/xray
name = "x-ray laser gun"
desc = "A high-power laser gun capable of expelling concentrated x-ray blasts that pass through multiple soft targets and heavier materials."
name = "\improper X-ray laser gun"
desc = "A high-power laser gun capable of expelling concentrated X-ray blasts that pass through multiple soft targets and heavier materials."
icon_state = "xray"
item_state = null
ammo_type = list(/obj/item/ammo_casing/energy/xray)
@@ -21,7 +21,7 @@
. = ..()
GLOB.poi_list += src
var/turf/T = get_turf(src)
var/msg = "A pulse rifle prize has been created at [ADMIN_COORDJMP(T)]"
var/msg = "A pulse rifle prize has been created at [ADMIN_VERBOSEJMP(T)]"
message_admins(msg)
log_game(msg)
@@ -96,6 +96,10 @@
charges--
..()
/obj/item/gun/magic/wand/resurrection/debug //for testing
name = "debug wand of healing"
max_charges = 500
/////////////////////////////////////
//WAND OF POLYMORPH
/////////////////////////////////////
@@ -10,7 +10,7 @@
/obj/item/gun/energy/beam_rifle
name = "particle acceleration rifle"
desc = "An energy-based anti material marksman rifle that uses highly charged particle beams moving at extreme velocities to decimate whatever is unfortunate enough to be targetted by one. \
desc = "An energy-based anti material marksman rifle that uses highly charged particle beams moving at extreme velocities to decimate whatever is unfortunate enough to be targeted by one. \
<span class='boldnotice'>Hold down left click while scoped to aim, when weapon is fully aimed (Tracer goes from red to green as it charges), release to fire. Moving while aiming or \
changing where you're pointing at while aiming will delay the aiming process depending on how much you changed.</span>"
icon = 'icons/obj/guns/energy.dmi'
@@ -195,6 +195,9 @@
return ..()
/obj/item/gun/energy/beam_rifle/emp_act(severity)
. = ..()
if(. & EMP_PROTECT_SELF)
return
chambered = null
recharge_newshot()
@@ -510,8 +513,6 @@
return 0.4
if(istype(target, /obj/structure/window))
return 0.5
if(istype(target, /obj/structure/blob)) //CIT CHANGE - Blobs are getting ggnore'd too hard and people need to GIT GUD
return 0.2
return 1
/obj/item/projectile/beam/beam_rifle/proc/handle_impact(atom/target)
@@ -11,8 +11,21 @@
clumsy_check = FALSE
randomspread = FALSE
var/hugbox = TRUE
var/max_power = INFINITY
var/reaction_volume_mod = 0
var/reaction_cycles = 3 //How many times gases react() before calculation. Very finnicky value, do not mess with without good reason.
var/prereaction = TRUE
var/bombcheck = TRUE
var/debug_power = 0
var/obj/item/transfer_valve/bomb
/obj/item/gun/blastcannon/debug
debug_power = 80
bombcheck = FALSE
/obj/item/gun/blastcannon/Initialize()
. = ..()
if(!pin)
@@ -56,38 +69,45 @@
return TRUE
return ..()
//returns the third value of a bomb blast
/obj/item/gun/blastcannon/proc/calculate_bomb()
if(!istype(bomb) || !istype(bomb.tank_one) || !istype(bomb.tank_two))
return 0
var/datum/gas_mixture/temp = new(60) //directional buff.
temp.merge(bomb.tank_one.air_contents.remove_ratio(1))
temp.merge(bomb.tank_two.air_contents.remove_ratio(2))
for(var/i in 1 to 6)
var/datum/gas_mixture/temp = new(max(reaction_volume_mod, 0))
bomb.merge_gases(temp)
if(prereaction)
temp.react(src)
var/prereaction_pressure = temp.return_pressure()
if(prereaction_pressure < TANK_FRAGMENT_PRESSURE)
return 0
for(var/i in 1 to reaction_cycles)
temp.react(src)
var/pressure = temp.return_pressure()
qdel(temp)
if(pressure < TANK_FRAGMENT_PRESSURE)
return 0
return (pressure / TANK_FRAGMENT_SCALE)
return ((pressure - TANK_FRAGMENT_PRESSURE) / TANK_FRAGMENT_SCALE)
/obj/item/gun/blastcannon/afterattack(atom/target, mob/user, flag, params)
if((!bomb) || (!target) || (get_dist(get_turf(target), get_turf(user)) <= 2))
if((!bomb && bombcheck) || (!target) || (get_dist(get_turf(target), get_turf(user)) <= 2))
return ..()
var/power = calculate_bomb()
var/power = bomb? calculate_bomb() : debug_power
power = min(power, max_power)
QDEL_NULL(bomb)
update_icon()
var/heavy = power * 0.2
var/heavy = power * 0.25
var/medium = power * 0.5
var/light = power
user.visible_message("<span class='danger'>[user] opens [bomb] on [user.p_their()] [name] and fires a blast wave at [target]!</span>","<span class='danger'>You open [bomb] on your [name] and fire a blast wave at [target]!</span>")
playsound(user, "explosion", 100, 1)
var/turf/starting = get_turf(user)
var/turf/targturf = get_turf(target)
var/log_str = "Blast wave fired from [ADMIN_COORDJMP(starting)] ([get_area_name(user, TRUE)]) at [ADMIN_COORDJMP(targturf)] ([target.name]) by [user.name]([user.ckey]) with power [heavy]/[medium]/[light]."
var/log_str = "Blast wave fired from [ADMIN_VERBOSEJMP(starting)] ([get_area_name(user, TRUE)]) at [ADMIN_VERBOSEJMP(targturf)] ([target.name]) by [user.name]([user.ckey]) with power [heavy]/[medium]/[light]."
message_admins(log_str)
log_game(log_str)
var/obj/item/projectile/blastwave/BW = new(loc, heavy, medium, light)
BW.preparePixelProjectile(target, get_turf(target), user, params, 0)
BW.hugbox = hugbox
BW.preparePixelProjectile(target, get_turf(src), params, 0)
BW.fire()
/obj/item/projectile/blastwave
@@ -99,6 +119,7 @@
var/heavyr = 0
var/mediumr = 0
var/lightr = 0
var/hugbox = TRUE
range = 150
/obj/item/projectile/blastwave/Initialize(mapload, _h, _m, _l)
@@ -110,14 +131,25 @@
/obj/item/projectile/blastwave/Range()
..()
var/amount_destruction = EXPLODE_NONE
var/wallbreak_chance = 0
if(heavyr)
amount_destruction = EXPLODE_DEVASTATE
wallbreak_chance = 99
else if(mediumr)
amount_destruction = EXPLODE_HEAVY
wallbreak_chance = 66
else if(lightr)
amount_destruction = EXPLODE_LIGHT
wallbreak_chance = 33
if(amount_destruction)
loc.ex_act(amount_destruction)
if(hugbox)
loc.contents_explosion(EXPLODE_HEAVY, loc)
if(istype(loc, /turf/closed/wall))
var/turf/closed/wall/W = loc
if(prob(wallbreak_chance))
W.dismantle_wall(TRUE, TRUE)
else
loc.ex_act(amount_destruction)
else
qdel(src)
@@ -44,8 +44,8 @@
grenades -= F
F.forceMove(user.loc)
F.throw_at(target, 30, 2, user)
message_admins("[key_name_admin(user)] fired a grenade ([F.name]) from a grenade launcher ([src.name]).")
log_game("[key_name(user)] fired a grenade ([F.name]) from a grenade launcher ([src.name]).")
message_admins("[ADMIN_LOOKUPFLW(user)] fired a grenade ([F.name]) from a grenade launcher ([src]) from [AREACOORD(user)] at [target] [AREACOORD(target)].")
log_game("[key_name(user)] fired a grenade ([F.name]) with a grenade launcher ([src]) from [AREACOORD(user)] at [target] [AREACOORD(target)].")
F.active = 1
F.icon_state = initial(F.icon_state) + "_active"
playsound(user.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)