Compiles, and guns work™

This commit is contained in:
TheDZD
2016-05-31 22:50:55 -04:00
parent 95d7a68a75
commit a4e950d21a
74 changed files with 288 additions and 550 deletions
+8 -76
View File
@@ -1,71 +1,5 @@
//Vox pinning weapon.
/obj/item/weapon/gun/launcher/spikethrower
name = "Vox spike thrower"
desc = "A vicious alien projectile weapon. Parts of it quiver gelatinously, as though the thing is insectile and alive."
var/last_regen = 0
var/spike_gen_time = 100
var/max_spikes = 3
var/spikes = 3
release_force = 30
icon = 'icons/obj/gun.dmi'
icon_state = "spikethrower3"
item_state = "spikethrower"
fire_sound_text = "a strange noise"
fire_sound = 'sound/weapons/bladeslice.ogg'
/obj/item/weapon/gun/launcher/spikethrower/New()
..()
processing_objects.Add(src)
last_regen = world.time
/obj/item/weapon/gun/launcher/spikethrower/Destroy()
processing_objects.Remove(src)
return ..()
/obj/item/weapon/gun/launcher/spikethrower/process()
if(spikes < max_spikes && world.time > last_regen + spike_gen_time)
spikes++
last_regen = world.time
update_icon()
/obj/item/weapon/gun/launcher/spikethrower/examine(mob/user)
..(user)
to_chat(user, "It has [spikes] [spikes == 1 ? "spike" : "spikes"] remaining.")
/obj/item/weapon/gun/launcher/spikethrower/update_icon()
icon_state = "spikethrower[spikes]"
/obj/item/weapon/gun/launcher/spikethrower/emp_act(severity)
return
/obj/item/weapon/gun/launcher/spikethrower/special_check(user)
if(istype(user,/mob/living/carbon/human))
var/mob/living/carbon/human/H = user
if(H.species && H.species.name != "Vox" && H.species.name != "Vox Armalis")
to_chat(user, "\red \The [src] does not respond to you!")
return 0
return 1
/obj/item/weapon/gun/launcher/spikethrower/update_release_force()
return
/obj/item/weapon/gun/launcher/spikethrower/chamber_round()
if(in_chamber) return 1
if(spikes < 1) return 0
spikes--
in_chamber = new /obj/item/weapon/spike(src)
return 1
/obj/item/weapon/gun/launcher/spikethrower/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0)
if(..()) update_icon()
//This gun only functions for armalis. The on-sprite is too huge to render properly on other sprites.
/obj/item/weapon/gun/energy/noisecannon
name = "alien heavy cannon"
desc = "It's some kind of enormous alien weapon, as long as a man is tall."
@@ -73,15 +7,11 @@
icon_state = "noisecannon"
item_state = "noisecannon"
recoil = 1
force = 10
projectile_type = "/obj/item/projectile/energy/sonic"
ammo_type = "/obj/item/projectile/energy/sonic"
cell_type = "/obj/item/weapon/stock_parts/cell/super"
fire_delay = 40
fire_sound = 'sound/effects/basscannon.ogg'
var/mode = 1
/obj/item/weapon/gun/energy/noisecannon/attack_hand(mob/user as mob)
if(loc != user)
var/mob/living/carbon/human/H = user
@@ -89,16 +19,18 @@
if(H.species.name == "Vox Armalis")
..()
return
to_chat(user, "\red \The [src] is far too large for you to pick up.")
to_chat(user, "<span class='warning'>\The [src] is far too large for you to pick up.</span>")
return
/obj/item/weapon/gun/energy/noisecannon/process_chambered() //Does not have ammo.
in_chamber = new projectile_type(src)
return 1
/obj/item/weapon/gun/energy/noisecannon/update_icon()
return
//Casing
/obj/item/ammo_casing/energy/sonic
projectile_type = /obj/item/projectile/energy/sonic
fire_sound = 'sound/effects/basscannon.ogg'
delay = 40
//Projectile.
/obj/item/projectile/energy/sonic
name = "distortion"
+14 -12
View File
@@ -3,6 +3,7 @@
name = "energy gun"
desc = "A basic energy-based gun."
fire_sound = 'sound/weapons/Taser.ogg'
fire_sound_text = "laser blast"
var/obj/item/weapon/stock_parts/cell/power_supply //What type of power cell this uses
var/cell_type = /obj/item/weapon/stock_parts/cell
@@ -42,23 +43,24 @@
update_icon()
/obj/item/weapon/gun/energy/Destroy()
if(self_recharge)
if(selfcharge)
processing_objects.Remove(src)
return ..()
/obj/item/weapon/gun/energy/process()
if(selfcharge) //Every [recharge_time] ticks, recharge a shot for the cyborg
charge_tick++
if(charge_tick < recharge_time)
if(charge_tick < charge_delay)
return 0
charge_tick = 0
if(!power_supply)
return 0 // check if we actually need to recharge
var/obj/item/ammo_casing/energy/E = ammo_type[select]
if(use_external_power)
var/obj/item/weapon/stock_parts/cell/external = get_external_power_supply()
if(!external || !external.use(charge_cost/10)) //Take power from the borg...
if(!external || !external.use((E.e_cost)/10)) //Take power from the borg...
return 0 //Note, uses /10 because of shitty mods to the cell system
power_supply.give(charge_cost) //... to recharge the shot
power_supply.give(E.e_cost) //... to recharge the shot
update_icon()
/obj/item/weapon/gun/energy/attack_self(mob/living/user as mob)
@@ -136,11 +138,11 @@
toggle_gunlight()
/obj/item/weapon/gun/energy/suicide_act(mob/user)
if (src.can_shoot())
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>")
if (can_shoot())
user.visible_message("<span class='suicide'>[user] is putting the barrel of the [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)
user.visible_message("<span class='suicide'>[user] melts \his face off with the [src.name]!</span>")
user.visible_message("<span class='suicide'>[user] melts \his face off with the [name]!</span>")
playsound(loc, fire_sound, 50, 1, -1)
var/obj/item/ammo_casing/energy/shot = ammo_type[select]
power_supply.use(shot.e_cost)
@@ -150,21 +152,21 @@
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 \his brains out with the [src.name]! It looks like \he's trying to commit suicide!</b></span>")
user.visible_message("<span class='suicide'>[user] is pretending to blow \his brains out with the [name]! It looks like \he's trying to commit suicide!</b></span>")
playsound(loc, 'sound/weapons/empty.ogg', 50, 1, -1)
return (OXYLOSS)
/obj/item/weapon/gun/energy/proc/robocharge()
if(isrobot(src.loc))
var/mob/living/silicon/robot/R = src.loc
if(isrobot(loc))
var/mob/living/silicon/robot/R = loc
if(R && R.cell)
var/obj/item/ammo_casing/energy/shot = ammo_type[select] //Necessary to find cost of shot
if(R.cell.use(shot.e_cost/10)) //Take power from the borg... //Divided by 10 because cells and charge costs are fucked.
power_supply.give(shot.e_cost) //... to recharge the shot
/obj/item/weapon/gun/energy/proc/get_external_power_supply()
if(istype(src.loc, /obj/item/rig_module))
var/obj/item/rig_module/module = src.loc
if(istype(loc, /obj/item/rig_module))
var/obj/item/rig_module/module = loc
if(module.holder && module.holder.wearer)
var/mob/living/carbon/human/H = module.holder.wearer
if(istype(H) && H.back)
@@ -92,9 +92,9 @@
/obj/item/weapon/gun/energy/lasercannon/mounted
name = "mounted laser cannon"
self_recharge = 1
selfcharge = 1
use_external_power = 1
recharge_time = 10
charge_delay = 10
/obj/item/weapon/gun/energy/lasercannon/cyborg
@@ -130,7 +130,6 @@
origin_tech = "combat=1;magnets=2"
clumsy_check = 0
needs_permit = 0
pin = /obj/item/device/firing_pin/tag/blue
ammo_x_offset = 2
selfcharge = 1
@@ -142,6 +141,5 @@
origin_tech = "combat=1;magnets=2"
clumsy_check = 0
needs_permit = 0
pin = /obj/item/device/firing_pin/tag/red
ammo_x_offset = 2
selfcharge = 1
@@ -23,7 +23,7 @@
/obj/item/weapon/gun/energy/gun/mounted
name = "mounted energy gun"
self_recharge = 1
selfcharge = 1
use_external_power = 1
/obj/item/weapon/gun/energy/gun/mini
@@ -37,8 +37,8 @@
can_flashlight = 0 // Can't attach or detach the flashlight, and override it's icon update
/obj/item/weapon/gun/energy/gun/mini/New()
cell.maxcharge = 6000
cell.charge = 6000
power_supply.maxcharge = 6000
power_supply.charge = 6000
F = new /obj/item/device/flashlight/seclite(src)
..()
@@ -84,7 +84,6 @@
origin_tech = "combat=3;materials=5;powerstorage=3"
var/fail_tick = 0
charge_delay = 5
pin = null
can_charge = 0
ammo_x_offset = 1
ammo_type = list(/obj/item/ammo_casing/energy/electrode, /obj/item/ammo_casing/energy/laser, /obj/item/ammo_casing/energy/disabler)
@@ -106,11 +105,11 @@
switch(fail_tick)
if(0 to 200)
fail_tick += (2*(100-reliability))
M.rad_act(40)
M.apply_effect(rand(3,120), IRRADIATE)
to_chat(M, "<span class='userdanger'>Your [name] feels warmer.</span>")
if(201 to INFINITY)
SSobj.processing.Remove(src)
M.rad_act(80)
processing_objects.Remove(src)
M.apply_effect(300, IRRADIATE)
crit_fail = 1
to_chat(M, "<span class='userdanger'>Your [name]'s reactor overloads!</span>")
@@ -130,27 +129,3 @@
overlays += "[icon_state]_fail_1"
if(151 to INFINITY)
overlays += "[icon_state]_fail_2"
/obj/item/weapon/gun/energy/gun/turret/attack_self(mob/living/user as mob)
switch(mode)
if(0)
mode = 1
charge_cost = 500
fire_sound = 'sound/weapons/Laser.ogg'
to_chat(user, "\red [src.name] is now set to kill.")
projectile_type = /obj/item/projectile/beam
modifystate = "energykill"
fire_delay = 0
if(1)
mode = 0
charge_cost = 1000
fire_sound = 'sound/weapons/Taser.ogg'
to_chat(user, "\red [src.name] is now set to stun.")
projectile_type = /obj/item/projectile/energy/electrode
modifystate = "energystun"
fire_delay = 15
update_icon()
if(user.l_hand == src)
user.update_inv_l_hand()
else
user.update_inv_r_hand()
@@ -54,7 +54,7 @@
ammo_type = list(/obj/item/ammo_casing/energy/laser/pulse)
/obj/item/weapon/gun/energy/pulse/destroyer/attack_self(mob/living/user)
to_chat(user, "<span class='danger'>[src.name] has three settings, and they are all DESTROY.</span>")
to_chat(user, "<span class='danger'>[name] has three settings, and they are all DESTROY.</span>")
/obj/item/weapon/gun/energy/pulse_rifle/pistol/m1911
name = "\improper M1911-P"
+18 -14
View File
@@ -173,7 +173,7 @@
/obj/item/weapon/gun/energy/kinetic_accelerator/proc/reload()
power_supply.give(5000)
if(!suppressed)
playsound(src.loc, 'sound/weapons/kenetic_reload.ogg', 60, 1)
playsound(loc, 'sound/weapons/kenetic_reload.ogg', 60, 1)
else
to_chat(loc, "<span class='warning'>[src] silently charges up.<span>")
update_icon()
@@ -200,6 +200,10 @@
holds_charge = TRUE
unique_frequency = TRUE
/obj/item/weapon/gun/energy/kinetic_accelerator/crossbow/ninja
name = "energy dart thrower"
ammo_type = list(/obj/item/ammo_casing/energy/dart)
/obj/item/weapon/gun/energy/kinetic_accelerator/crossbow/large
name = "energy crossbow"
desc = "A reverse engineered weapon using syndicate technology."
@@ -218,8 +222,8 @@
/obj/item/weapon/gun/energy/kinetic_accelerator/suicide_act(mob/user)
if(!suppressed)
playsound(src.loc, 'sound/weapons/kenetic_reload.ogg', 60, 1)
user.visible_message("<span class='suicide'>[user] cocks the [src.name] and pretends to blow \his brains out! It looks like \he's trying to commit suicide!</b></span>")
playsound(loc, 'sound/weapons/kenetic_reload.ogg', 60, 1)
user.visible_message("<span class='suicide'>[user] cocks the [name] and pretends to blow \his brains out! It looks like \he's trying to commit suicide!</b></span>")
shoot_live_shot()
return (OXYLOSS)
@@ -235,9 +239,9 @@
flags = CONDUCT | OPENCONTAINER
attack_verb = list("attacked", "slashed", "cut", "sliced")
force = 12
sharpness = IS_SHARP
sharp = 1
edge = 1
can_charge = 0
heat = 3800
/obj/item/weapon/gun/energy/plasmacutter/examine(mob/user)
..()
@@ -406,7 +410,7 @@ obj/item/weapon/gun/energy/staff/focus
var/e_cost = 1000
origin_tech = "combat=3;materials=4;powerstorage=3;magnets=2"
ammo_type = /obj/item/ammo_casing/energy/temp
ammo_type = list(/obj/item/ammo_casing/energy/temp)
cell_type = "/obj/item/weapon/stock_parts/cell"
var/powercost = ""
@@ -427,8 +431,9 @@ obj/item/weapon/gun/energy/staff/focus
/obj/item/weapon/gun/energy/temperature/newshot()
..()
chambered.temperature = temperature
chambered.e_cost = e_cost
var/obj/item/ammo_casing/energy/temp/T = chambered
T.temperature = temperature
T.e_cost = e_cost
/obj/item/weapon/gun/energy/temperature/attack_self(mob/living/user as mob)
user.set_machine(src)
@@ -459,23 +464,22 @@ obj/item/weapon/gun/energy/staff/focus
add_fingerprint(usr)
return
/obj/item/weapon/gun/energy/temperature/process()
switch(temperature)
if(0 to 100)
charge_cost = 3000
e_cost = 3000
powercost = "High"
if(100 to 250)
charge_cost = 2000
e_cost = 2000
powercost = "Medium"
if(251 to 300)
charge_cost = 1000
e_cost = 1000
powercost = "Low"
if(301 to 400)
charge_cost = 2000
e_cost = 2000
powercost = "Medium"
if(401 to 1000)
charge_cost = 3000
e_cost = 3000
powercost = "High"
switch(powercost)
if("High") powercostcolor = "orange"
+1 -1
View File
@@ -9,7 +9,7 @@
/obj/item/weapon/gun/energy/taser/mounted
name = "mounted taser gun"
self_recharge = 1
selfcharge = 1
use_external_power = 1
/obj/item/weapon/gun/energy/taser/cyborg
@@ -35,3 +35,7 @@
var/desc = input("Please select a location to lock in.", "Telegun Target Interface") in L
teleport_target = L[desc]
/obj/item/weapon/gun/energy/telegun/newshot()
var/obj/item/ammo_casing/energy/teleport/T = chambered
T.teleport_target = teleport_target
@@ -15,7 +15,7 @@
/obj/item/weapon/gun/grenadelauncher/examine(mob/user)
if(..(user, 2))
to_chat(user, "<span class='notice'>[grenades.len] / [max_grenades] [ammo_name]s.</span>")
to_chat(user, "<span class='notice'>[grenades.len] / [max_grenades] grenades.</span>")
/obj/item/weapon/gun/grenadelauncher/attackby(obj/item/I as obj, mob/user as mob, params)
if((istype(I, /obj/item/weapon/grenade)))
@@ -24,10 +24,10 @@
return
I.loc = src
grenades += I
to_chat(user, "<span class='notice'>You put the [ammo_name] in the [name].</span>")
to_chat(user, "<span class='notice'>[grenades.len] / [max_grenades] [ammo_name]s.</span>")
to_chat(user, "<span class='notice'>You put the grenade in the [name].</span>")
to_chat(user, "<span class='notice'>[grenades.len] / [max_grenades] grenades.</span>")
else
to_chat(user, "<span class='warning'>The grenade launcher cannot hold more [ammo_name]s.</span>")
to_chat(user, "<span class='warning'>The grenade launcher cannot hold more grenades.</span>")
/obj/item/weapon/gun/grenadelauncher/afterattack(obj/target, mob/user , flag)
if(target == user)
@@ -45,8 +45,8 @@
grenades -= F
F.loc = 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("[key_name_admin(user)] fired a grenade ([F.name]) from a grenade launcher ([name]).")
log_game("[key_name(user)] fired a grenade ([F.name]) from a grenade launcher ([name]).")
F.active = 1
F.icon_state = initial(icon_state) + "_active"
playsound(user.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
+2 -1
View File
@@ -5,6 +5,7 @@
icon_state = "staffofnothing"
item_state = "staff"
fire_sound = 'sound/weapons/emitter.ogg'
fire_sound_text = "energy blast"
flags = CONDUCT
w_class = 5
var/max_charges = 6
@@ -75,6 +76,6 @@
return
/obj/item/weapon/gun/magic/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] is twisting the [src.name] above \his head, releasing a magical blast! It looks like \he's trying to commit suicide.</span>")
user.visible_message("<span class='suicide'>[user] is twisting the [name] above \his head, releasing a magical blast! It looks like \he's trying to commit suicide.</span>")
playsound(loc, fire_sound, 50, 1, -1)
return FIRELOSS
+1 -1
View File
@@ -67,7 +67,7 @@
var/message ="<span class='warning'>You irradiate yourself with pure energy! "
message += pick("Do not pass go. Do not collect 200 zorkmids.</span>","You feel more confident in your spell casting skills.</span>","You Die...</span>","Do you want your possessions identified?</span>")
to_chat(user, message)
user.adjustBurnLoss(500)
user.adjustFireLoss(500)
charges--
..()
+1 -1
View File
@@ -48,7 +48,7 @@
spawn(0)
current_beam.Start()
feedback_add_details("gun_fired","[src.type]")
feedback_add_details("gun_fired","[type]")
/obj/item/weapon/gun/medbeam/process()
var/mob/living/carbon/human/H = loc
+2 -2
View File
@@ -12,7 +12,7 @@
/obj/item/weapon/gun/energy/advtaser/mounted/dropped()//if somebody manages to drop this somehow...
..()
src.loc = null//send it to nullspace to get retrieved by the implant later on. gotta cover those edge cases.
loc = null//send it to nullspace to get retrieved by the implant later on. gotta cover those edge cases.
/obj/item/weapon/gun/energy/laser/mounted
name = "mounted laser"
@@ -28,4 +28,4 @@
/obj/item/weapon/gun/energy/laser/mounted/dropped()
..()
src.loc = null
loc = null
+6 -6
View File
@@ -96,7 +96,7 @@
if(user.l_hand != src && user.r_hand != src)
..()
return
to_chat(user, "<span class='notice'>You unscrew [silenced] from [src].</span>")
to_chat(user, "<span class='notice'>You unscrew [suppressed] from [src].</span>")
user.put_in_hands(suppressed)
fire_sound = S.oldsound
w_class = S.initial_w_class
@@ -108,7 +108,7 @@
/obj/item/weapon/gun/projectile/attack_self(mob/living/user as mob)
var/obj/item/ammo_casing/AC = chambered //Find chambered round
if(magazine)
magazine.loc = get_turf(src.loc)
magazine.loc = get_turf(loc)
user.put_in_hands(magazine)
magazine.update_icon()
magazine = null
@@ -136,18 +136,18 @@
return boolets
/obj/item/weapon/gun/projectile/suicide_act(mob/user)
if (src.chambered && src.chambered.BB && !src.chambered.BB.nodamage)
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>")
if (chambered && chambered.BB && !chambered.BB.nodamage)
user.visible_message("<span class='suicide'>[user] is putting the barrel of the [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, zone_override = "head")
user.visible_message("<span class='suicide'>[user] blows \his brains out with the [src.name]!</span>")
user.visible_message("<span class='suicide'>[user] blows \his brains out with the [name]!</span>")
return(BRUTELOSS)
else
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 \his brains out with the [src.name]! It looks like \he's trying to commit suicide!</b></span>")
user.visible_message("<span class='suicide'>[user] is pretending to blow \his brains out with the [name]! It looks like \he's trying to commit suicide!</b></span>")
playsound(loc, 'sound/weapons/empty.ogg', 50, 1, -1)
return (OXYLOSS)
@@ -1,6 +1,5 @@
/obj/item/weapon/gun/projectile/automatic
w_class = 3.0
automatic = 1
var/alarmed = 0
var/select = 1
can_suppress = 1
@@ -37,14 +36,14 @@
if(istype(AM, mag_type))
if(magazine)
to_chat(user, "<span class='notice'>You perform a tactical reload on \the [src], replacing the magazine.</span>")
magazine.forceMove(get_turf(src.loc))
magazine.loc = get_turf(loc)
magazine.update_icon()
magazine = null
else
to_chat(user, "<span class='notice'>You insert the magazine into \the [src].</span>")
user.remove_from_mob(AM)
magazine = AM
magazine.forceMove(src)
magazine.loc = src
chamber_round()
A.update_icon()
update_icon()
@@ -74,7 +73,7 @@
/obj/item/weapon/gun/projectile/automatic/proc/empty_alarm()
if(!chambered && !get_ammo() && !alarmed)
playsound(src.loc, 'sound/weapons/smg_empty_alarm.ogg', 40, 1)
playsound(loc, 'sound/weapons/smg_empty_alarm.ogg', 40, 1)
update_icon()
alarmed = 1
return
@@ -45,7 +45,7 @@
var/obj/item/ammo_casing/CB
CB = magazine.get_round(0)
if(CB)
CB.loc = get_turf(src.loc)
CB.loc = get_turf(loc)
CB.SpinAnimation(10, 1)
CB.update_icon()
num_unloaded++
@@ -124,7 +124,7 @@
afterattack(user, user) //you know the drill
user.visible_message("<span class='danger'>[src] goes off!</span>", "<span class='userdanger'>[src] goes off in your face!</span>")
return
if(do_after(user, 30/A.toolspeed, target = src))
if(do_after(user, 30, target = src))
if(magazine.ammo_count())
to_chat(user, "<span class='warning'>You can't modify it!</span>")
return
@@ -173,7 +173,7 @@
name = "\improper Russian Revolver"
desc = "A Russian-made revolver for drinking games. Uses .357 ammo, and has a mechanism that spins the chamber before each trigger pull."
origin_tech = "combat=2;materials=2"
mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rus357
mag_type = /obj/item/ammo_box/magazine/internal/rus357
var/spun = 0
@@ -211,7 +211,7 @@
var/obj/item/ammo_casing/CB
CB = magazine.get_round()
chambered = null
CB.loc = get_turf(src.loc)
CB.loc = get_turf(loc)
CB.update_icon()
num_unloaded++
if (num_unloaded)
@@ -234,7 +234,6 @@
return
if(ishuman(user))
var/mob/living/carbon/human/H = user
if(!spun)
to_chat(user, "<span class='warning'>You need to spin the revolver's chamber first!</span>")
return
@@ -245,12 +244,11 @@
var/obj/item/ammo_casing/AC = chambered
if(AC.fire(user, user))
playsound(user, fire_sound, 50, 1)
var/zone = check_zone(user.zone_selected)
var/obj/item/bodypart/affecting = H.get_bodypart(zone)
var/zone = check_zone(user.zone_sel.selecting)
if(zone == "head" || zone == "eyes" || zone == "mouth")
shoot_self(user, affecting)
shoot_self(user, zone)
else
user.visible_message("<span class='danger'>[user.name] cowardly fires [src] at \his [affecting.name]!</span>", "<span class='userdanger'>You cowardly fire [src] at your [affecting.name]!</span>", "<span class='italics'>You hear a gunshot!</span>")
user.visible_message("<span class='danger'>[user.name] cowardly fires [src] at \his [zone]!</span>", "<span class='userdanger'>You cowardly fire [src] at your [zone]!</span>", "<span class='italics'>You hear a gunshot!</span>")
return
user.visible_message("<span class='danger'>*click*</span>")
@@ -45,8 +45,8 @@
playsound(user.loc, 'sound/effects/bang.ogg', 50, 1)
M.primed = 1
M.throw_at(target, missile_range, missile_speed,user)
message_admins("[key_name_admin(user)] fired a rocket from a rocket launcher ([src.name]).")
log_game("[key_name_admin(user)] used a rocket launcher ([src.name]).")
message_admins("[key_name_admin(user)] fired a rocket from a rocket launcher ([name]).")
log_game("[key_name_admin(user)] used a rocket launcher ([name]).")
rockets -= I
qdel(I)
return
@@ -39,7 +39,7 @@
else if(cover_open && magazine)
//drop the mag
magazine.update_icon()
magazine.loc = get_turf(src.loc)
magazine.loc = get_turf(loc)
user.put_in_hands(magazine)
magazine = null
update_icon()
@@ -69,7 +69,7 @@
. = ..()
if((blocked != 100) && istype(target, /mob/living/carbon/human))
var/mob/living/carbon/human/H = target
H.drip(35)
H.drip(350)
/obj/item/projectile/bullet/saw/hollow
damage = 60
@@ -22,7 +22,7 @@
update_icon()
/obj/item/weapon/gun/projectile/shotgun/process_chambered()
/obj/item/weapon/gun/projectile/shotgun/process_chamber()
return ..(0, 0)
/obj/item/weapon/gun/projectile/shotgun/chamber_round()
@@ -79,7 +79,7 @@
name = "riot shotgun"
desc = "A sturdy shotgun with a longer magazine and a fixed tactical stock designed for non-lethal riot control."
icon_state = "riotshotgun"
mag_type = /obj/item/ammo_box/magazine/internal/shotriot
mag_type = /obj/item/ammo_box/magazine/internal/shot/riot
sawn_desc = "Come with me if you want to live."
/obj/item/weapon/gun/projectile/shotgun/riot/attackby(obj/item/A, mob/user, params)
@@ -143,7 +143,7 @@
..()
if(guns_left)
var/obj/item/weapon/gun/projectile/shotgun/boltaction/enchanted/GUN = new
GUN.guns_left = src.guns_left - 1
GUN.guns_left = guns_left - 1
user.drop_item()
user.swap_hand()
user.put_in_hands(GUN)
@@ -172,7 +172,7 @@
flags = CONDUCT
slot_flags = SLOT_BACK
origin_tech = "combat=3;materials=1"
mag_type = /obj/item/ammo_box/magazine/internal/cylinder/dual
mag_type = /obj/item/ammo_box/magazine/internal/shot/dual
sawn_desc = "Omar's coming!"
unique_rename = 1
unique_reskin = 1
@@ -204,7 +204,7 @@
var/obj/item/ammo_casing/CB
CB = magazine.get_round(0)
chambered = null
CB.loc = get_turf(src.loc)
CB.loc = get_turf(loc)
CB.update_icon()
num_unloaded++
if (num_unloaded)
@@ -286,7 +286,7 @@
if(do_after(user, 30, target = src))
user.visible_message("<span class='warning'>[user] shortens \the [src]!</span>", "<span class='warning'>You shorten \the [src]!</span>")
name = "sawn-off [src.name]"
name = "sawn-off [name]"
desc = sawn_desc
icon_state = "[icon_state]-sawn"
w_class = 3
@@ -303,7 +303,7 @@
/obj/item/weapon/gun/projectile/shotgun/automatic/shoot_live_shot(mob/living/user as mob|obj)
..()
src.pump(user)
pump(user)
/obj/item/weapon/gun/projectile/shotgun/automatic/combat
name = "combat shotgun"
@@ -375,7 +375,7 @@
sawn_desc = "I'm sorry, but why did you saw your cane in the first place?"
attack_verb = list("bludgeoned", "whacked", "disciplined", "thrashed")
fire_sound = 'sound/weapons/Gunshot_silenced.ogg'
silenced = 1
suppressed = 1
needs_permit = 0 //its just a cane beepsky.....
/obj/item/weapon/gun/projectile/revolver/doublebarrel/improvised/cane/attackby(obj/item/A, mob/user, params)
@@ -385,7 +385,7 @@
/obj/item/weapon/gun/projectile/revolver/doublebarrel/improvised/cane/examine(mob/user) // HAD TO REPEAT EXAMINE CODE BECAUSE GUN CODE DOESNT STEALTH
var/f_name = "\a [src]."
if(src.blood_DNA && !istype(src, /obj/effect/decal))
if(blood_DNA && !istype(src, /obj/effect/decal))
if(gender == PLURAL)
f_name = "some "
else
@@ -4,7 +4,7 @@
icon_state = "sniper"
item_state = "sniper"
recoil = 2
heavy_weapon = 1
weapon_weight = WEAPON_MEDIUM
mag_type = /obj/item/ammo_box/magazine/sniper_rounds
fire_delay = 40
origin_tech = "combat=8"
@@ -117,7 +117,7 @@
/obj/item/projectile/bullet/sniper/haemorrhage/on_hit(atom/target, blocked = 0, hit_zone)
if((blocked != 100) && istype(target, /mob/living/carbon/human))
var/mob/living/carbon/human/H = target
H.drip(100)
H.drip(1000)
return ..()
+6 -5
View File
@@ -28,7 +28,7 @@
chambered.BB = new S.projectile_type (src)
S.reagents.trans_to(in_chamber, S.reagents.total_volume)
S.reagents.trans_to(chambered.BB, S.reagents.total_volume)
chambered.BB.name = S.name
syringes.Remove(S)
@@ -55,8 +55,9 @@
var/obj/item/weapon/reagent_containers/syringe/S = syringes[syringes.len]
if(!S) return 0
S.forceMove(user.loc)
if(!S)
return 0
S.loc = user.loc
syringes.Remove(S)
to_chat(user, "<span class='notice'>You unload [S] from \the [src]!</span>")
@@ -70,7 +71,7 @@
return
to_chat(user, "<span class='notice'>You load [A] into \the [src]!</span>")
syringes.Add(A)
A.forceMove(src)
A.loc = src
return 1
else
to_chat(user, "<span class='notice'>[src] cannot hold more syringes.</span>")
@@ -90,5 +91,5 @@
w_class = 2
origin_tech = "combat=2;syndicate=2"
force = 2 //Also very weak because it's smaller
silenced = 1 //Softer fire sound
suppressed = 1 //Softer fire sound
can_unsuppress = 0 //Permanently silenced