Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13 into Ghommie-cit28
This commit is contained in:
@@ -6,9 +6,10 @@
|
||||
/obj/item/ammo_casing/caseless/fire_casing(atom/target, mob/living/user, params, distro, quiet, zone_override, spread)
|
||||
if (..()) //successfully firing
|
||||
moveToNullspace()
|
||||
return 1
|
||||
QDEL_NULL(src)
|
||||
return TRUE
|
||||
else
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
/obj/item/ammo_casing/caseless/update_icon()
|
||||
..()
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
/obj/item/ammo_casing/caseless/a84mm
|
||||
desc = "An 84mm anti-armour rocket."
|
||||
/obj/item/ammo_casing/caseless/rocket
|
||||
name = "\improper PM-9HE"
|
||||
desc = "An 84mm High Explosive rocket. Fire at people and pray."
|
||||
caliber = "84mm"
|
||||
icon_state = "srm-8"
|
||||
projectile_type = /obj/item/projectile/bullet/a84mm_he
|
||||
|
||||
/obj/item/ammo_casing/caseless/rocket/hedp
|
||||
name = "\improper PM-9HEDP"
|
||||
desc = "An 84mm High Explosive Dual Purpose rocket. Pointy end toward mechs."
|
||||
caliber = "84mm"
|
||||
icon_state = "s-casing-live"
|
||||
projectile_type = /obj/item/projectile/bullet/a84mm
|
||||
|
||||
@@ -12,6 +12,6 @@
|
||||
|
||||
/obj/item/ammo_box/magazine/internal/rocketlauncher
|
||||
name = "grenade launcher internal magazine"
|
||||
ammo_type = /obj/item/ammo_casing/caseless/a84mm
|
||||
ammo_type = /obj/item/ammo_casing/caseless/rocket
|
||||
caliber = "84mm"
|
||||
max_ammo = 1
|
||||
|
||||
@@ -170,7 +170,7 @@
|
||||
return
|
||||
|
||||
if(weapon_weight == WEAPON_HEAVY && user.get_inactive_held_item())
|
||||
to_chat(user, "<span class='userdanger'>You need both hands free to fire [src]!</span>")
|
||||
to_chat(user, "<span class='userdanger'>You need both hands free to fire \the [src]!</span>")
|
||||
return
|
||||
|
||||
//DUAL (or more!) WIELDING
|
||||
@@ -422,7 +422,7 @@
|
||||
if(alight)
|
||||
alight.Remove(user)
|
||||
|
||||
/obj/item/gun/proc/handle_suicide(mob/living/carbon/human/user, mob/living/carbon/human/target, params)
|
||||
/obj/item/gun/proc/handle_suicide(mob/living/carbon/human/user, mob/living/carbon/human/target, params, bypass_timer)
|
||||
if(!ishuman(user) || !ishuman(target))
|
||||
return
|
||||
|
||||
@@ -438,7 +438,7 @@
|
||||
|
||||
semicd = TRUE
|
||||
|
||||
if(!do_mob(user, target, 120) || user.zone_selected != BODY_ZONE_PRECISE_MOUTH)
|
||||
if(!bypass_timer && (!do_mob(user, target, 120) || user.zone_selected != BODY_ZONE_PRECISE_MOUTH))
|
||||
if(user)
|
||||
if(user == target)
|
||||
user.visible_message("<span class='notice'>[user] decided not to shoot.</span>")
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
var/mag_type = /obj/item/ammo_box/magazine/m10mm //Removes the need for max_ammo and caliber info
|
||||
var/obj/item/ammo_box/magazine/magazine
|
||||
var/casing_ejector = TRUE //whether the gun ejects the chambered casing
|
||||
var/magazine_wording = "magazine"
|
||||
|
||||
/obj/item/gun/ballistic/Initialize()
|
||||
. = ..()
|
||||
@@ -57,7 +58,7 @@
|
||||
if (!magazine && istype(AM, mag_type))
|
||||
if(user.transferItemToLoc(AM, src))
|
||||
magazine = AM
|
||||
to_chat(user, "<span class='notice'>You load a new magazine into \the [src].</span>")
|
||||
to_chat(user, "<span class='notice'>You load a new [magazine_wording] into \the [src].</span>")
|
||||
if(magazine.ammo_count())
|
||||
playsound(src, "gun_insert_full_magazine", 70, 1)
|
||||
if(!chambered)
|
||||
@@ -72,7 +73,7 @@
|
||||
to_chat(user, "<span class='warning'>You cannot seem to get \the [src] out of your hands!</span>")
|
||||
return
|
||||
else if (magazine)
|
||||
to_chat(user, "<span class='notice'>There's already a magazine in \the [src].</span>")
|
||||
to_chat(user, "<span class='notice'>There's already a [magazine_wording] in \the [src].</span>")
|
||||
if(istype(A, /obj/item/suppressor))
|
||||
var/obj/item/suppressor/S = A
|
||||
if(!can_suppress)
|
||||
@@ -222,7 +223,7 @@
|
||||
|
||||
/obj/item/suppressor
|
||||
name = "suppressor"
|
||||
desc = "A universal syndicate small-arms suppressor for maximum espionage."
|
||||
desc = "A syndicate small-arms suppressor for maximum espionage."
|
||||
icon = 'icons/obj/guns/projectile.dmi'
|
||||
icon_state = "suppressor"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
@@ -231,6 +232,4 @@
|
||||
|
||||
/obj/item/suppressor/specialoffer
|
||||
name = "cheap suppressor"
|
||||
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"
|
||||
desc = "A foreign knock-off suppressor, it feels flimsy, cheap, and brittle. Still fits some weapons."
|
||||
|
||||
@@ -74,25 +74,91 @@
|
||||
update_icon()
|
||||
chamber_round()
|
||||
|
||||
/obj/item/gun/ballistic/automatic/atlauncher
|
||||
desc = "A pre-loaded, single shot anti-armour launcher."
|
||||
name = "anti-armour grenade launcher"
|
||||
/obj/item/gun/ballistic/rocketlauncher
|
||||
name = "\improper PML-9"
|
||||
desc = "A reusable rocket propelled grenade launcher. The words \"NT this way\" and an arrow have been written near the barrel."
|
||||
icon_state = "rocketlauncher"
|
||||
item_state = "rocketlauncher"
|
||||
mag_type = /obj/item/ammo_box/magazine/internal/rocketlauncher
|
||||
fire_sound = 'sound/weapons/rocketlaunch.ogg'
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
can_suppress = FALSE
|
||||
pin = /obj/item/firing_pin/implant/pindicate
|
||||
burst_size = 1
|
||||
fire_delay = 0
|
||||
select = 0
|
||||
actions_types = list()
|
||||
casing_ejector = FALSE
|
||||
weapon_weight = WEAPON_HEAVY
|
||||
magazine_wording = "rocket"
|
||||
|
||||
/obj/item/gun/ballistic/automatic/atlauncher/attack_self()
|
||||
return
|
||||
/obj/item/gun/ballistic/rocketlauncher/unrestricted
|
||||
pin = /obj/item/firing_pin
|
||||
|
||||
/obj/item/gun/ballistic/automatic/atlauncher/update_icon()
|
||||
..()
|
||||
icon_state = "rocketlauncher[magazine ? "-[get_ammo(1)]" : ""]"
|
||||
/obj/item/gun/ballistic/rocketlauncher/handle_atom_del(atom/A)
|
||||
if(A == chambered)
|
||||
chambered = null
|
||||
if(!QDELETED(magazine))
|
||||
QDEL_NULL(magazine)
|
||||
if(A == magazine)
|
||||
magazine = null
|
||||
if(!QDELETED(chambered))
|
||||
QDEL_NULL(chambered)
|
||||
update_icon()
|
||||
return ..()
|
||||
|
||||
/obj/item/gun/ballistic/rocketlauncher/can_shoot()
|
||||
return chambered?.BB
|
||||
|
||||
/obj/item/gun/ballistic/rocketlauncher/process_chamber()
|
||||
if(chambered)
|
||||
chambered = null
|
||||
if(magazine)
|
||||
QDEL_NULL(magazine)
|
||||
update_icon()
|
||||
|
||||
/obj/item/gun/ballistic/rocketlauncher/attack_self_tk(mob/user)
|
||||
return //too difficult to remove the rocket with TK
|
||||
|
||||
/obj/item/gun/ballistic/rocketlauncher/attack_self(mob/living/user)
|
||||
if(magazine)
|
||||
if(chambered)
|
||||
chambered.forceMove(magazine)
|
||||
magazine.stored_ammo.Insert(1, chambered)
|
||||
chambered = null
|
||||
else
|
||||
stack_trace("Removed [magazine] from [src] without a chambered round")
|
||||
magazine.forceMove(drop_location())
|
||||
if(user.is_holding(src))
|
||||
user.put_in_hands(magazine)
|
||||
playsound(src, 'sound/weapons/gun_magazine_remove_full.ogg', 70, TRUE)
|
||||
to_chat(user, "<span class='notice'>You work the [magazine] out from [src].</span>")
|
||||
magazine = null
|
||||
else
|
||||
to_chat(user, "<span class='notice'>There's no rocket in [src].</span>")
|
||||
update_icon()
|
||||
|
||||
/obj/item/gun/ballistic/rocketlauncher/update_icon()
|
||||
icon_state = "[initial(icon_state)]-[chambered ? "1" : "0"]"
|
||||
|
||||
/obj/item/gun/ballistic/rocketlauncher/suicide_act(mob/living/user)
|
||||
user.visible_message("<span class='warning'>[user] aims [src] at the ground! It looks like [user.p_theyre()] performing a sick rocket jump!</span>", \
|
||||
"<span class='userdanger'>You aim [src] at the ground to perform a bisnasty rocket jump...</span>")
|
||||
if(can_shoot())
|
||||
user.notransform = TRUE
|
||||
playsound(src, 'sound/vehicles/rocketlaunch.ogg', 80, 1, 5)
|
||||
animate(user, pixel_z = 300, time = 30, easing = LINEAR_EASING)
|
||||
sleep(70)
|
||||
animate(user, pixel_z = 0, time = 5, easing = LINEAR_EASING)
|
||||
sleep(5)
|
||||
user.notransform = FALSE
|
||||
process_fire(user, user, TRUE)
|
||||
if(!QDELETED(user)) //if they weren't gibbed by the explosion, take care of them for good.
|
||||
user.gib()
|
||||
return MANUAL_SUICIDE
|
||||
else
|
||||
sleep(5)
|
||||
shoot_with_empty_chamber(user)
|
||||
sleep(20)
|
||||
user.visible_message("<span class='warning'>[user] looks about the room realizing [user.p_theyre()] still there. [user.p_they(TRUE)] proceed to shove [src] down their throat and choke [user.p_them()]self with it!</span>", \
|
||||
"<span class='userdanger'>You look around after realizing you're still here, then proceed to choke yourself to death with [src]!</span>")
|
||||
sleep(20)
|
||||
return OXYLOSS
|
||||
|
||||
@@ -243,7 +243,7 @@
|
||||
|
||||
/obj/item/gun/energy/printer
|
||||
name = "cyborg lmg"
|
||||
desc = "A machinegun that fires 3d-printed flechettes slowly regenerated using a cyborg's internal power source."
|
||||
desc = "A LMG that fires 3D-printed flechettes. They are slowly resupplied using the cyborg's internal power source."
|
||||
icon_state = "l6closed0"
|
||||
icon = 'icons/obj/guns/projectile.dmi'
|
||||
cell_type = "/obj/item/stock_parts/cell/secborg"
|
||||
|
||||
@@ -9,9 +9,9 @@
|
||||
return TRUE
|
||||
|
||||
/obj/item/projectile/bullet/a84mm
|
||||
name ="anti-armour rocket"
|
||||
name ="\improper HEDP rocket"
|
||||
desc = "USE A WEEL GUN"
|
||||
icon_state= "atrocket"
|
||||
icon_state= "84mm-hedp"
|
||||
damage = 80
|
||||
var/anti_armour_damage = 200
|
||||
armour_penetration = 100
|
||||
@@ -29,17 +29,17 @@
|
||||
S.take_overall_damage(anti_armour_damage*0.75, anti_armour_damage*0.25)
|
||||
return TRUE
|
||||
|
||||
/obj/item/projectile/bullet/srmrocket
|
||||
name ="SRM-8 Rocket"
|
||||
/obj/item/projectile/bullet/a84mm_he
|
||||
name ="\improper HE missile"
|
||||
desc = "Boom."
|
||||
icon_state = "missile"
|
||||
damage = 30
|
||||
ricochets_max = 0 //it's a MISSILE
|
||||
|
||||
/obj/item/projectile/bullet/srmrocket/on_hit(atom/target, blocked=0)
|
||||
/obj/item/projectile/bullet/a84mm_he/on_hit(atom/target, blocked=0)
|
||||
..()
|
||||
if(!isliving(target)) //if the target isn't alive, so is a wall or something
|
||||
explosion(target, 0, 1, 2, 4)
|
||||
else
|
||||
explosion(target, 0, 0, 2, 4)
|
||||
return TRUE
|
||||
return TRUE
|
||||
Reference in New Issue
Block a user