mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-26 01:22:03 +00:00
Merge remote-tracking branch 'upstream/master' into urange
This commit is contained in:
@@ -3,6 +3,15 @@
|
||||
caliber = "357"
|
||||
projectile_type = /obj/item/projectile/bullet
|
||||
|
||||
/obj/item/ammo_casing/a762
|
||||
desc = "A 7.62 bullet casing."
|
||||
icon_state = "762-casing"
|
||||
caliber = "a762"
|
||||
projectile_type = /obj/item/projectile/bullet
|
||||
|
||||
/obj/item/ammo_casing/a762/enchanted
|
||||
projectile_type = /obj/item/projectile/bullet/weakbullet3
|
||||
|
||||
/obj/item/ammo_casing/a50
|
||||
desc = "A .50AE bullet casing."
|
||||
caliber = ".50"
|
||||
@@ -68,6 +77,11 @@
|
||||
caliber = ".45"
|
||||
projectile_type = /obj/item/projectile/bullet/weakbullet3
|
||||
|
||||
/obj/item/ammo_casing/n762
|
||||
desc = "A 7.62x38mmR bullet casing."
|
||||
caliber = "n762"
|
||||
projectile_type = /obj/item/projectile/bullet
|
||||
|
||||
/obj/item/ammo_casing/shotgun
|
||||
name = "shotgun slug"
|
||||
desc = "A 12 gauge lead slug."
|
||||
@@ -142,6 +156,12 @@
|
||||
icon_state = "mshell"
|
||||
projectile_type = /obj/item/projectile/bullet/meteorshot
|
||||
|
||||
/obj/item/ammo_casing/shotgun/breaching
|
||||
name = "breaching shell"
|
||||
desc = "An economic version of the meteorshot, utilizing similar technologies. Great for busting down doors."
|
||||
icon_state = "mshell"
|
||||
projectile_type = /obj/item/projectile/bullet/meteorshot/weak
|
||||
|
||||
/obj/item/ammo_casing/shotgun/pulseslug
|
||||
name = "pulse slug"
|
||||
desc = "A delicate device which can be loaded into a shotgun. The primer acts as a button which triggers the gain medium and fires a powerful \
|
||||
|
||||
@@ -50,6 +50,13 @@
|
||||
max_ammo = 5
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_box/n762
|
||||
name = "ammo box (7.62x38mmR)"
|
||||
icon_state = "10mmbox"
|
||||
origin_tech = "combat=2"
|
||||
ammo_type = /obj/item/ammo_casing/n762
|
||||
max_ammo = 14
|
||||
|
||||
/obj/item/ammo_box/foambox
|
||||
name = "ammo box (Foam Darts)"
|
||||
icon = 'icons/obj/guns/toy.dmi'
|
||||
|
||||
@@ -166,3 +166,14 @@ obj/item/ammo_casing/energy/net
|
||||
/obj/item/ammo_casing/energy/trap
|
||||
projectile_type = /obj/item/projectile/energy/trap
|
||||
select_name = "snare"
|
||||
|
||||
/obj/item/ammo_casing/energy/instakill
|
||||
projectile_type = /obj/item/projectile/beam/instakill
|
||||
e_cost = 0
|
||||
select_name = "DESTROY"
|
||||
|
||||
/obj/item/ammo_casing/energy/instakill/blue
|
||||
projectile_type = /obj/item/projectile/beam/instakill/blue
|
||||
|
||||
/obj/item/ammo_casing/energy/instakill/red
|
||||
projectile_type = /obj/item/projectile/beam/instakill/red
|
||||
|
||||
@@ -71,6 +71,11 @@
|
||||
caliber = "40mm"
|
||||
max_ammo = 6
|
||||
|
||||
/obj/item/ammo_box/magazine/internal/cylinder/rev762
|
||||
name = "nagant revolver cylinder"
|
||||
ammo_type = /obj/item/ammo_casing/n762
|
||||
caliber = "n762"
|
||||
max_ammo = 7
|
||||
|
||||
// Shotgun internal mags
|
||||
/obj/item/ammo_box/magazine/internal/shot
|
||||
@@ -80,6 +85,9 @@
|
||||
max_ammo = 4
|
||||
multiload = 0
|
||||
|
||||
/obj/item/ammo_box/magazine/internal/shot/lethal
|
||||
ammo_type = /obj/item/ammo_casing/shotgun/buckshot
|
||||
|
||||
/obj/item/ammo_box/magazine/internal/shot/ammo_count(countempties = 1)
|
||||
if (!countempties)
|
||||
var/boolets = 0
|
||||
@@ -226,6 +234,17 @@
|
||||
name = "SMG Magazine (Incindiary 9mm)"
|
||||
ammo_type = /obj/item/ammo_casing/c9mminc
|
||||
|
||||
/obj/item/ammo_box/magazine/pistolm9mm
|
||||
name = "pistol magazine (9mm)"
|
||||
icon_state = "9x19p-8"
|
||||
ammo_type = /obj/item/ammo_casing/c9mm
|
||||
caliber = "9mm"
|
||||
max_ammo = 15
|
||||
|
||||
/obj/item/ammo_box/magazine/pistolm9mm/update_icon()
|
||||
..()
|
||||
icon_state = "9x19p-[ammo_count() ? "8" : "0"]"
|
||||
|
||||
/obj/item/ammo_box/magazine/smgm45
|
||||
name = "SMG magazine (.45)"
|
||||
icon_state = "c20r45-20"
|
||||
@@ -272,10 +291,10 @@ obj/item/ammo_box/magazine/tommygunm45
|
||||
multiple_sprites = 2
|
||||
|
||||
/obj/item/ammo_box/magazine/m12g
|
||||
name = "shotgun magazine (12g slugs)"
|
||||
name = "shotgun magazine (12g taser slugs)"
|
||||
desc = "A drum magazine."
|
||||
icon_state = "m12gb"
|
||||
ammo_type = /obj/item/ammo_casing/shotgun
|
||||
icon_state = "m12gs"
|
||||
ammo_type = /obj/item/ammo_casing/shotgun/stunslug
|
||||
origin_tech = "combat=3;syndicate=1"
|
||||
caliber = "shotgun"
|
||||
max_ammo = 8
|
||||
@@ -289,10 +308,10 @@ obj/item/ammo_box/magazine/tommygunm45
|
||||
icon_state = "m12gb"
|
||||
ammo_type = /obj/item/ammo_casing/shotgun/buckshot
|
||||
|
||||
/obj/item/ammo_box/magazine/m12g/stun
|
||||
name = "shotgun magazine (12g taser slugs)"
|
||||
icon_state = "m12gs"
|
||||
ammo_type = /obj/item/ammo_casing/shotgun/stunslug
|
||||
/obj/item/ammo_box/magazine/m12g/slug
|
||||
name = "shotgun magazine (12g slugs)"
|
||||
icon_state = "m12gb"
|
||||
ammo_type = /obj/item/ammo_casing/shotgun
|
||||
|
||||
/obj/item/ammo_box/magazine/m12g/dragon
|
||||
name = "shotgun magazine (12g dragon's breath)"
|
||||
@@ -304,6 +323,11 @@ obj/item/ammo_box/magazine/tommygunm45
|
||||
icon_state = "m12gt"
|
||||
ammo_type = /obj/item/ammo_casing/shotgun/dart/bioterror
|
||||
|
||||
/obj/item/ammo_box/magazine/m12g/breach
|
||||
name = "shotgun magazine (12g breacher slugs)"
|
||||
icon_state = "m12gbc"
|
||||
ammo_type = /obj/item/projectile/bullet/meteorshot/weak
|
||||
|
||||
/obj/item/ammo_box/magazine/toy
|
||||
name = "foam force META magazine"
|
||||
ammo_type = /obj/item/ammo_casing/caseless/foam_dart
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
if (zone_override)
|
||||
BB.def_zone = zone_override
|
||||
else
|
||||
BB.def_zone = user.zone_sel.selecting
|
||||
BB.def_zone = user.zone_selected
|
||||
BB.suppressed = quiet
|
||||
|
||||
if(reagents && BB.reagents)
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
return
|
||||
if(!ismob(target) || user.a_intent == "harm") //melee attack
|
||||
return
|
||||
if(target == user && user.zone_sel.selecting != "mouth") //so we can't shoot ourselves (unless mouth selected)
|
||||
if(target == user && user.zone_selected != "mouth") //so we can't shoot ourselves (unless mouth selected)
|
||||
return
|
||||
|
||||
if(istype(user))//Check if the user can use the gun, if the user isn't alive(turrets) assume it can.
|
||||
@@ -144,11 +144,13 @@
|
||||
return
|
||||
|
||||
if(!can_shoot()) //Just because you can pull the trigger doesn't mean it can't shoot.
|
||||
shoot_with_empty_chamber(user)
|
||||
return
|
||||
|
||||
if(flag)
|
||||
handle_suicide(user, target, params) //
|
||||
return
|
||||
if(user.zone_selected == "mouth")
|
||||
handle_suicide(user, target, params)
|
||||
return
|
||||
|
||||
|
||||
//Exclude lasertag guns from the CLUMSY check.
|
||||
@@ -395,7 +397,7 @@ obj/item/weapon/gun/proc/newshot()
|
||||
|
||||
semicd = 1
|
||||
|
||||
if(!do_mob(user, target, 120) || user.zone_sel.selecting != "mouth")
|
||||
if(!do_mob(user, target, 120) || user.zone_selected != "mouth")
|
||||
if(user)
|
||||
if(user == target)
|
||||
user.visible_message("<span class='notice'>[user] decided life was worth living.</span>")
|
||||
|
||||
@@ -284,3 +284,27 @@
|
||||
ammo_type = list(/obj/item/ammo_casing/energy/temp, /obj/item/ammo_casing/energy/temp/hot)
|
||||
cell_type = "/obj/item/weapon/stock_parts/cell/high"
|
||||
pin = null
|
||||
|
||||
/obj/item/weapon/gun/energy/laser/instakill
|
||||
name = "instakill rifle"
|
||||
icon_state = "instagib"
|
||||
item_state = "instagib"
|
||||
desc = "A specialized ASMD laser-rifle, capable of flat-out disintegrating most targets in a single hit."
|
||||
ammo_type = list(/obj/item/ammo_casing/energy/instakill)
|
||||
force = 60
|
||||
origin_tech = null
|
||||
|
||||
/obj/item/weapon/gun/energy/laser/instakill/red
|
||||
desc = "A specialized ASMD laser-rifle, capable of flat-out disintegrating most targets in a single hit. This one has a red design."
|
||||
icon_state = "instagibred"
|
||||
item_state = "instagibred"
|
||||
ammo_type = list(/obj/item/ammo_casing/energy/instakill/red)
|
||||
|
||||
/obj/item/weapon/gun/energy/laser/instakill/blue
|
||||
desc = "A specialized ASMD laser-rifle, capable of flat-out disintegrating most targets in a single hit. This one has a blue design."
|
||||
icon_state = "instagibblue"
|
||||
item_state = "instagibblue"
|
||||
ammo_type = list(/obj/item/ammo_casing/energy/instakill/blue)
|
||||
|
||||
/obj/item/weapon/gun/energy/laser/instakill/emp_act() //implying you could stop the instagib
|
||||
return
|
||||
@@ -12,6 +12,7 @@
|
||||
var/max_range = 8
|
||||
var/active = 0
|
||||
var/datum/beam/current_beam = null
|
||||
var/mounted = 0 //Denotes if this is a handheld or mounted version
|
||||
|
||||
heavy_weapon = 1
|
||||
|
||||
@@ -31,7 +32,8 @@
|
||||
current_target = null
|
||||
|
||||
/obj/item/weapon/gun/medbeam/process_fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, message = 1, params, zone_override)
|
||||
add_fingerprint(user)
|
||||
if(isliving(user))
|
||||
add_fingerprint(user)
|
||||
|
||||
if(current_target)
|
||||
LoseTarget()
|
||||
@@ -47,8 +49,9 @@
|
||||
feedback_add_details("gun_fired","[src.type]")
|
||||
|
||||
/obj/item/weapon/gun/medbeam/process()
|
||||
var/mob/living/carbon/human/H = loc
|
||||
if(!istype(H))
|
||||
|
||||
var/source = loc
|
||||
if(!mounted && !ishuman(source))
|
||||
LoseTarget()
|
||||
return
|
||||
|
||||
@@ -58,24 +61,29 @@
|
||||
|
||||
if(world.time <= last_check+check_delay)
|
||||
return
|
||||
|
||||
|
||||
last_check = world.time
|
||||
|
||||
if(get_dist(H,current_target)>max_range || !los_check(H,current_target))
|
||||
if(get_dist(source, current_target)>max_range || !los_check(source, current_target))
|
||||
LoseTarget()
|
||||
H << "<span class='warning'>You lose control of the beam!</span>"
|
||||
if(ishuman(source))
|
||||
source << "<span class='warning'>You lose control of the beam!</span>"
|
||||
return
|
||||
|
||||
if(current_target)
|
||||
on_beam_tick(current_target)
|
||||
|
||||
/obj/item/weapon/gun/medbeam/proc/los_check(mob/user,mob/target)
|
||||
/obj/item/weapon/gun/medbeam/proc/los_check(atom/movable/user, mob/target)
|
||||
var/turf/user_turf = user.loc
|
||||
if(!istype(user_turf))
|
||||
if(mounted)
|
||||
user_turf = get_turf(user)
|
||||
else if(!istype(user_turf))
|
||||
return 0
|
||||
var/obj/dummy = new(user_turf)
|
||||
dummy.pass_flags |= PASSTABLE|PASSGLASS|PASSGRILLE //Grille/Glass so it can be used through common windows
|
||||
for(var/turf/turf in getline(user_turf,target))
|
||||
if(mounted && turf == user_turf)
|
||||
continue //Mechs are dense and thus fail the check
|
||||
if(turf.density)
|
||||
qdel(dummy)
|
||||
return 0
|
||||
@@ -97,10 +105,18 @@
|
||||
/obj/item/weapon/gun/medbeam/proc/on_beam_tick(var/mob/living/target)
|
||||
target.adjustBruteLoss(-4)
|
||||
target.adjustFireLoss(-4)
|
||||
return
|
||||
return
|
||||
|
||||
/obj/item/weapon/gun/medbeam/proc/on_beam_release(var/mob/living/target)
|
||||
return
|
||||
|
||||
/obj/effect/ebeam/medical
|
||||
name = "medical beam"
|
||||
|
||||
//////////////////////////////Mech Version///////////////////////////////
|
||||
/obj/item/weapon/gun/medbeam/mech
|
||||
mounted = 1
|
||||
|
||||
/obj/item/weapon/gun/medbeam/mech/New()
|
||||
..()
|
||||
SSobj.processing -= src //Mech mediguns do not process until installed, and are controlled by the holder obj
|
||||
|
||||
@@ -17,6 +17,10 @@
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/gun/projectile/update_icon()
|
||||
..()
|
||||
icon_state = "[initial(icon_state)][suppressed ? "-suppressed" : ""]"
|
||||
|
||||
/obj/item/weapon/gun/projectile/process_chamber(eject_casing = 1, empty_chamber = 1)
|
||||
// if(in_chamber)
|
||||
// return 1
|
||||
@@ -162,4 +166,4 @@
|
||||
desc = "A foreign knock-off suppressor, it feels flimsy, cheap, and brittle. Still fits all weapons."
|
||||
icon = 'icons/obj/guns/projectile.dmi'
|
||||
icon_state = "suppressor"
|
||||
|
||||
|
||||
|
||||
@@ -44,3 +44,15 @@
|
||||
desc = "A Deagle brand Deagle for operators operating operationally. Uses .50 AE ammo."
|
||||
icon_state = "deaglecamo"
|
||||
item_state = "deagleg"
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/pistol/APS
|
||||
name = "stechkin APS pistol"
|
||||
desc = "The original russian version of a widely used Syndicate sidearm. Uses 9mm ammo."
|
||||
icon_state = "aps"
|
||||
w_class = 3
|
||||
origin_tech = "combat=3;materials=2;syndicate=3"
|
||||
mag_type = /obj/item/ammo_box/magazine/pistolm9mm
|
||||
can_suppress = 0
|
||||
burst_size = 3
|
||||
fire_delay = 2
|
||||
action_button_name = "Toggle Firemode"
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
//Energy guns with swappable, rechargable, magazines.
|
||||
|
||||
/obj/item/ammo_box/magazine/recharge
|
||||
name = "power pack"
|
||||
desc = "A rechargeable, detachable battery that serves as a magazine for laser rifles."
|
||||
icon_state = "oldrifle-20"
|
||||
ammo_type = /obj/item/ammo_casing/caseless/laser
|
||||
caliber = "laser"
|
||||
max_ammo = 20
|
||||
|
||||
/obj/item/ammo_box/magazine/recharge/update_icon()
|
||||
desc = "[initial(desc)] It has [stored_ammo.len] shots\s left."
|
||||
icon_state = "oldrifle-[round(ammo_count(),4)]"
|
||||
|
||||
|
||||
/obj/item/ammo_casing/caseless/laser
|
||||
name = "laser casing"
|
||||
desc = "You shouldn't be seeing this."
|
||||
caliber = "laser"
|
||||
icon_state = "s-casing-live"
|
||||
projectile_type = /obj/item/projectile/beam
|
||||
fire_sound = 'sound/weapons/Laser.ogg'
|
||||
|
||||
|
||||
/obj/item/ammo_box/magazine/recharge/attack_self() //No popping out the "bullets"
|
||||
return
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/laser
|
||||
name = "laser rifle"
|
||||
desc = "Though sometimes mocked for the relatively weak firepower of their energy weapons, the logistic miracle of rechargable ammunition has given Nanotrasen a decisive edge over many a foe."
|
||||
icon_state = "oldrifle"
|
||||
item_state = "arg"
|
||||
mag_type = /obj/item/ammo_box/magazine/recharge
|
||||
fire_delay = 2
|
||||
can_suppress = 0
|
||||
burst_size = 0
|
||||
action_button_name = null
|
||||
fire_sound = 'sound/weapons/Laser.ogg'
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/laser/process_chamber(eject_casing = 0, empty_chamber = 1)
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/laser/update_icon()
|
||||
..()
|
||||
icon_state = "oldrifle[magazine ? "-[Ceiling(get_ammo(0)/4)*4]" : ""]"
|
||||
return
|
||||
@@ -24,6 +24,9 @@
|
||||
return ..(0, 1)
|
||||
|
||||
/obj/item/weapon/gun/projectile/revolver/attackby(obj/item/A, mob/user, params)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
var/num_loaded = magazine.attackby(A, user, params, 1)
|
||||
if(num_loaded)
|
||||
user << "<span class='notice'>You load [num_loaded] shell\s into \the [src].</span>"
|
||||
@@ -158,6 +161,15 @@
|
||||
recoil = 8
|
||||
pin = /obj/item/device/firing_pin
|
||||
|
||||
/obj/item/weapon/gun/projectile/revolver/nagant
|
||||
name = "nagant revolver"
|
||||
desc = "An old model of revolver that originated in Russia. Able to be suppressed. Uses 7.62x38mmR ammo."
|
||||
icon_state = "nagant"
|
||||
origin_tech = "combat=3"
|
||||
can_suppress = 1
|
||||
mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rev762
|
||||
|
||||
|
||||
// A gun to play Russian Roulette!
|
||||
// You can spin the chamber to randomize the position of the bullet.
|
||||
|
||||
@@ -236,7 +248,7 @@
|
||||
var/obj/item/ammo_casing/AC = chambered
|
||||
if(AC.fire(user, user))
|
||||
playsound(user, fire_sound, 50, 1)
|
||||
var/obj/item/organ/limb/affecting = H.get_organ(check_zone(user.zone_sel.selecting))
|
||||
var/obj/item/organ/limb/affecting = H.get_organ(check_zone(user.zone_selected))
|
||||
var/limb_name = affecting.getDisplayName()
|
||||
if(affecting.name == "head" || affecting.name == "eyes" || affecting.name == "mouth")
|
||||
user.apply_damage(300, BRUTE, affecting)
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
/obj/item/weapon/gun/projectile/automatic/l6_saw
|
||||
name = "\improper L6 SAW"
|
||||
desc = "A heavily modified 7.62 light machine gun, designated 'L6 SAW'. Has 'Aussec Armoury - 2531' engraved on the receiver below the designation."
|
||||
desc = "A heavily modified 5.56x45mm light machine gun, designated 'L6 SAW'. Has 'Aussec Armoury - 2531' engraved on the receiver below the designation."
|
||||
icon_state = "l6closed100"
|
||||
item_state = "l6closedmag"
|
||||
w_class = 5
|
||||
slot_flags = 0
|
||||
origin_tech = "combat=5;materials=1;syndicate=2"
|
||||
mag_type = /obj/item/ammo_box/magazine/m762
|
||||
mag_type = /obj/item/ammo_box/magazine/mm556x45
|
||||
heavy_weapon = 1
|
||||
fire_sound = 'sound/weapons/Gunshot_smg.ogg'
|
||||
var/cover_open = 0
|
||||
@@ -26,7 +26,8 @@
|
||||
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/l6_saw/update_icon()
|
||||
icon_state = "l6[cover_open ? "open" : "closed"][magazine ? Ceiling(get_ammo(0)/12.5)*25 : "-empty"]"
|
||||
icon_state = "l6[cover_open ? "open" : "closed"][magazine ? Ceiling(get_ammo(0)/12.5)*25 : "-empty"][suppressed ? "-suppressed" : ""]"
|
||||
item_state = "l6[cover_open ? "openmag" : "closedmag"]"
|
||||
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/l6_saw/afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, flag, params) //what I tried to do here is just add a check to see if the cover is open or not and add an icon_state change because I can't figure out how c-20rs do it with overlays
|
||||
@@ -54,6 +55,9 @@
|
||||
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/l6_saw/attackby(obj/item/A, mob/user, params)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
if(!cover_open)
|
||||
user << "<span class='warning'>[src]'s cover is closed! You can't insert a new mag.</span>"
|
||||
return
|
||||
@@ -64,70 +68,77 @@
|
||||
|
||||
|
||||
/obj/item/projectile/bullet/saw
|
||||
damage = 35
|
||||
damage = 45
|
||||
armour_penetration = 5
|
||||
|
||||
/obj/item/projectile/bullet/saw/bleeding
|
||||
damage = 15
|
||||
damage = 20
|
||||
armour_penetration = 0
|
||||
|
||||
/obj/item/projectile/bullet/saw/bleeding/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(25)
|
||||
H.drip(35)
|
||||
|
||||
/obj/item/projectile/bullet/saw/hollow
|
||||
damage = 45
|
||||
armour_penetration = 0
|
||||
damage = 60
|
||||
armour_penetration = -10
|
||||
|
||||
/obj/item/projectile/bullet/saw/ap
|
||||
damage = 30
|
||||
armour_penetration = 35
|
||||
damage = 40
|
||||
armour_penetration = 75
|
||||
|
||||
/obj/item/projectile/bullet/saw/incen
|
||||
damage = 5
|
||||
damage = 7
|
||||
armour_penetration = 0
|
||||
|
||||
obj/item/projectile/bullet/saw/incen/Move()
|
||||
..()
|
||||
var/turf/location = get_turf(src)
|
||||
if(location)
|
||||
PoolOrNew(/obj/effect/hotspot, location)
|
||||
location.hotspot_expose(700, 50, 1)
|
||||
|
||||
/obj/item/projectile/bullet/saw/incen/on_hit(atom/target, blocked = 0)
|
||||
. = ..()
|
||||
if(iscarbon(target))
|
||||
var/mob/living/carbon/M = target
|
||||
M.adjust_fire_stacks(1)
|
||||
M.adjust_fire_stacks(3)
|
||||
M.IgniteMob()
|
||||
|
||||
|
||||
//magazines//
|
||||
|
||||
|
||||
/obj/item/ammo_box/magazine/m762
|
||||
name = "box magazine (7.62mm)"
|
||||
/obj/item/ammo_box/magazine/mm556x45
|
||||
name = "box magazine (5.56x45mm)"
|
||||
icon_state = "a762-50"
|
||||
origin_tech = "combat=2"
|
||||
ammo_type = /obj/item/ammo_casing/a762
|
||||
caliber = "a762"
|
||||
ammo_type = /obj/item/ammo_casing/mm556x45
|
||||
caliber = "mm55645"
|
||||
max_ammo = 50
|
||||
|
||||
/obj/item/ammo_box/magazine/m762/bleeding
|
||||
name = "box magazine (Bleeding 7.62mm)"
|
||||
/obj/item/ammo_box/magazine/mm556x45/bleeding
|
||||
name = "box magazine (Bleeding 5.56x45mm)"
|
||||
origin_tech = "combat=3"
|
||||
ammo_type = /obj/item/ammo_casing/a762/bleeding
|
||||
ammo_type = /obj/item/ammo_casing/mm556x45/bleeding
|
||||
|
||||
/obj/item/ammo_box/magazine/m762/hollow
|
||||
name = "box magazine (Hollow-Point 7.62mm)"
|
||||
/obj/item/ammo_box/magazine/mm556x45/hollow
|
||||
name = "box magazine (Hollow-Point 5.56x45mm)"
|
||||
origin_tech = "combat=3"
|
||||
ammo_type = /obj/item/ammo_casing/a762/hollow
|
||||
ammo_type = /obj/item/ammo_casing/mm556x45/hollow
|
||||
|
||||
/obj/item/ammo_box/magazine/m762/ap
|
||||
name = "box magazine (Armor Penetrating 7.62mm)"
|
||||
/obj/item/ammo_box/magazine/mm556x45/ap
|
||||
name = "box magazine (Armor Penetrating 5.56x45mm)"
|
||||
origin_tech = "combat=4"
|
||||
ammo_type = /obj/item/ammo_casing/a762/ap
|
||||
ammo_type = /obj/item/ammo_casing/mm556x45/ap
|
||||
|
||||
/obj/item/ammo_box/magazine/m762/incen
|
||||
name = "box magazine (Incendiary 7.62mm)"
|
||||
/obj/item/ammo_box/magazine/mm556x45/incen
|
||||
name = "box magazine (Incendiary 5.56x45mm)"
|
||||
origin_tech = "combat=4"
|
||||
ammo_type = /obj/item/ammo_casing/a762/incen
|
||||
ammo_type = /obj/item/ammo_casing/mm556x45/incen
|
||||
|
||||
/obj/item/ammo_box/magazine/m762/update_icon()
|
||||
/obj/item/ammo_box/magazine/mm556x45/update_icon()
|
||||
..()
|
||||
icon_state = "a762-[round(ammo_count(),10)]"
|
||||
|
||||
@@ -135,28 +146,27 @@
|
||||
//casings//
|
||||
|
||||
|
||||
/obj/item/ammo_casing/a762
|
||||
desc = "A 7.62mm bullet casing."
|
||||
/obj/item/ammo_casing/mm556x45
|
||||
desc = "A 556x45mm bullet casing."
|
||||
icon_state = "762-casing"
|
||||
caliber = "a762"
|
||||
caliber = "mm55645"
|
||||
projectile_type = /obj/item/projectile/bullet/saw
|
||||
|
||||
/obj/item/ammo_casing/a762/bleeding
|
||||
desc = "A 7.62mm bullet casing with specialized inner-casing, that when it makes contact with a target, release tiny shrapnel to induce internal bleeding."
|
||||
/obj/item/ammo_casing/mm556x45/bleeding
|
||||
desc = "A 556x45mm bullet casing with specialized inner-casing, that when it makes contact with a target, release tiny shrapnel to induce internal bleeding."
|
||||
icon_state = "762-casing"
|
||||
caliber = "a762"
|
||||
projectile_type = /obj/item/projectile/bullet/saw/bleeding
|
||||
|
||||
/obj/item/ammo_casing/a762/hollow
|
||||
desc = "A 7.62mm bullet casing designed to cause more damage to unarmored targets."
|
||||
/obj/item/ammo_casing/mm556x45/hollow
|
||||
desc = "A 556x45mm bullet casing designed to cause more damage to unarmored targets."
|
||||
projectile_type = /obj/item/projectile/bullet/saw/hollow
|
||||
|
||||
/obj/item/ammo_casing/a762/ap
|
||||
desc = "A 7.62mm bullet casing designed with a hardened-tipped core to help penetrate armored targets."
|
||||
/obj/item/ammo_casing/mm556x45/ap
|
||||
desc = "A 556x45mm bullet casing designed with a hardened-tipped core to help penetrate armored targets."
|
||||
projectile_type = /obj/item/projectile/bullet/saw/ap
|
||||
|
||||
/obj/item/ammo_casing/a762/incen
|
||||
desc = "A 7.62mm bullet casing designed with a chemical-filled capsule on the tip that when bursted, reacts with the atmosphere to produce a fireball, engulfing the target in flames. "
|
||||
/obj/item/ammo_casing/mm556x45/incen
|
||||
desc = "A 556x45mm bullet casing designed with a chemical-filled capsule on the tip that when bursted, reacts with the atmosphere to produce a fireball, engulfing the target in flames. "
|
||||
projectile_type = /obj/item/projectile/bullet/saw/incen
|
||||
|
||||
|
||||
|
||||
@@ -12,6 +12,9 @@
|
||||
var/recentpump = 0 // to prevent spammage
|
||||
|
||||
/obj/item/weapon/gun/projectile/shotgun/attackby(obj/item/A, mob/user, params)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
var/num_loaded = magazine.attackby(A, user, params, 1)
|
||||
if(num_loaded)
|
||||
user << "<span class='notice'>You load [num_loaded] shell\s into \the [src]!</span>"
|
||||
@@ -64,6 +67,9 @@
|
||||
if (chambered)
|
||||
user << "A [chambered.BB ? "live" : "spent"] one is in the chamber."
|
||||
|
||||
/obj/item/weapon/gun/projectile/shotgun/lethal
|
||||
mag_type = /obj/item/ammo_box/magazine/internal/shot/lethal
|
||||
|
||||
// RIOT SHOTGUN //
|
||||
|
||||
/obj/item/weapon/gun/projectile/shotgun/riot //for spawn in the armory
|
||||
@@ -146,6 +152,7 @@
|
||||
|
||||
/obj/item/ammo_box/magazine/internal/boltaction/enchanted
|
||||
max_ammo =1
|
||||
ammo_type = /obj/item/ammo_casing/a762/enchanted
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -97,7 +97,7 @@
|
||||
/obj/item/projectile/bullet/sniper/soporific/on_hit(atom/target, blocked = 0, hit_zone)
|
||||
if((blocked != 100) && istype(target, /mob/living))
|
||||
var/mob/living/L = target
|
||||
L.SetSleeping(20)
|
||||
L.Sleeping(20)
|
||||
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
/obj/item/projectile/beam/practice
|
||||
name = "practice laser"
|
||||
damage = 0
|
||||
hitsound = null
|
||||
nodamage = 1
|
||||
|
||||
/obj/item/projectile/beam/scatter
|
||||
@@ -92,3 +91,22 @@
|
||||
/obj/item/projectile/beam/lasertag/bluetag
|
||||
icon_state = "bluelaser"
|
||||
suit_types = list(/obj/item/clothing/suit/redtag)
|
||||
|
||||
/obj/item/projectile/beam/instakill
|
||||
name = "instagib laser"
|
||||
icon_state = "purple_laser"
|
||||
damage = 200
|
||||
damage_type = BURN
|
||||
|
||||
/obj/item/projectile/beam/instakill/blue
|
||||
icon_state = "blue_laser"
|
||||
|
||||
/obj/item/projectile/beam/instakill/red
|
||||
icon_state = "red_laser"
|
||||
|
||||
/obj/item/projectile/beam/instakill/on_hit(atom/target)
|
||||
. = ..()
|
||||
if(iscarbon(target))
|
||||
var/mob/living/carbon/M = target
|
||||
M.visible_message("<span class='danger'>[M] explodes into a shower of gibs!</span>")
|
||||
M.gib()
|
||||
@@ -72,7 +72,7 @@
|
||||
. = ..()
|
||||
if(iscarbon(target))
|
||||
var/mob/living/carbon/M = target
|
||||
M.adjust_fire_stacks(1)
|
||||
M.adjust_fire_stacks(4)
|
||||
M.IgniteMob()
|
||||
|
||||
|
||||
@@ -101,6 +101,11 @@
|
||||
stun = 8
|
||||
hitsound = 'sound/effects/meteorimpact.ogg'
|
||||
|
||||
/obj/item/projectile/bullet/meteorshot/weak
|
||||
damage = 10
|
||||
weaken = 4
|
||||
stun = 4
|
||||
|
||||
/obj/item/projectile/bullet/meteorshot/on_hit(atom/target, blocked = 0)
|
||||
. = ..()
|
||||
if(istype(target, /atom/movable))
|
||||
|
||||
@@ -25,10 +25,16 @@
|
||||
nodamage = 0
|
||||
|
||||
/obj/item/projectile/magic/fireball/Range()
|
||||
var/mob/living/L = locate(/mob/living) in (range(src, 1) - firer)
|
||||
var/turf/T1 = get_step(src,turn(dir, -45))
|
||||
var/turf/T2 = get_step(src,turn(dir, 45))
|
||||
var/mob/living/L = locate(/mob/living) in T1 //if there's a mob alive in our front right diagonal, we hit it.
|
||||
if(L && L.stat != DEAD)
|
||||
Bump(L) //Magic Bullet #teachthecontroversy
|
||||
return
|
||||
L = locate(/mob/living) in T2
|
||||
if(L && L.stat != DEAD)
|
||||
Bump(L)
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/projectile/magic/fireball/on_hit(target)
|
||||
@@ -164,7 +170,6 @@
|
||||
new_mob.invisibility = 0
|
||||
new_mob.job = "Cyborg"
|
||||
var/mob/living/silicon/robot/Robot = new_mob
|
||||
Robot.mmi = new /obj/item/device/mmi(new_mob)
|
||||
Robot.mmi.transfer_identity(M) //Does not transfer key/client.
|
||||
else
|
||||
new_mob.languages |= HUMAN
|
||||
|
||||
Reference in New Issue
Block a user