Mounted guns names, grenades tweaks and projectiles changes (#3322)

-name added the prefix mounted to all mounted guns
-converted the hos sniper rifle bullet to the new armor system
-converted projectile/special.dm to absolute pathing
-reduced again the damage of frag grenades
-added armor penetration to the pulse beam, to make it more than just a stronger laser
-fixed the fake grenade getting stuck in the primed sprite after its detonation and added a indication it is take in the desc
This commit is contained in:
Alberyk
2017-08-27 19:00:32 -03:00
committed by Lohikar
parent 608cf8feda
commit fb3ac0d718
9 changed files with 115 additions and 109 deletions

View File

@@ -54,6 +54,7 @@
name = "pulse"
icon_state = "u_laser"
damage = 50
armor_penetration = 50
muzzle_type = /obj/effect/projectile/laser_pulse/muzzle
tracer_type = /obj/effect/projectile/laser_pulse/tracer
@@ -318,7 +319,7 @@
muzzle_type = /obj/effect/projectile/cult/heavy/muzzle
tracer_type = /obj/effect/projectile/cult/heavy/tracer
impact_type = /obj/effect/projectile/cult/heavy/impact
/obj/item/projectile/beam/energy_net
name = "energy net projection"
icon_state = "xray"

View File

@@ -188,6 +188,10 @@
/obj/item/projectile/bullet/rifle/a556
damage = 30
/obj/item/projectile/bullet/rifle/a556/ap
damage = 25
armor_penetration = 25
/obj/item/projectile/bullet/rifle/a145
damage = 80
stun = 3
@@ -214,22 +218,18 @@
if(!isrobot(target))
L.apply_effect(5, DROWSY, 0)
if(def_zone == "torso")
if(blocked < 2 && !(blocked < 1))
target.visible_message("<b>[target]</b> yawns.")
if(blocked < 1)
spawn(120)
L.apply_effect(10, PARALYZE, 0)
target.visible_message("<b>[target]</b> moans.")
if(def_zone == "head" && blocked < 2)
spawn(35)
L.apply_effect(20, PARALYZE, 0)
if(blocked < 100 && !(blocked < 20))
L.emote("yawns")
if(blocked < 20)
addtimer(CALLBACK(src, .proc/apply_sedative, target, 10), 120)
if(def_zone == "head" && blocked < 100)
addtimer(CALLBACK(src, .proc/apply_sedative, target, 20), 35)
if(def_zone != "torso" && def_zone != "head")
if(blocked < 2 && !(blocked < 1))
target.visible_message("<b>[target]</b> yawns.")
if(blocked < 1)
spawn(45)
L.apply_effect(15, PARALYZE, 0)
target.visible_message("<b>[target]</b> moans.")
if(blocked < 100 && !(blocked < 20))
L.emote("yawns")
if(blocked < 20)
addtimer(CALLBACK(src, .proc/apply_sedative, target, 15), 45)
if(isanimal(target))
target.visible_message("<b>[target]</b> twitches, foaming at the mouth.")
L.apply_damage(35, TOX) //temporary until simple_mob paralysis actually works.
@@ -239,6 +239,9 @@
M.Sleeping(1200)*/ //commented out until simple_mob paralysis actually works.
..()
/obj/item/projectile/bullet/rifle/tranq/proc/apply_sedative(var/mob/living/L, var/severity)
L.apply_effect(severity, PARALYZE, 0)
L.emote("moans")
/* Miscellaneous */
/obj/item/projectile/bullet/suffocationbullet//How does this even work?
@@ -246,10 +249,6 @@
damage = 20
damage_type = OXY
/obj/item/projectile/bullet/rifle/a556/ap
damage = 25
armor_penetration = 25
/obj/item/projectile/bullet/cyanideround
name = "poison bullet"
damage = 40
@@ -262,8 +261,8 @@
edge = 1
/obj/item/projectile/bullet/burstbullet/on_impact(var/atom/A)
explosion(A, -1, 0, 2)
..()
explosion(A, -1, 0, 2)
..()
/obj/item/projectile/bullet/blank
invisibility = 101

View File

@@ -7,9 +7,9 @@
check_armour = "energy"
var/pulse_range = 1
on_hit(var/atom/target, var/blocked = 0)
empulse(target, pulse_range, pulse_range)
return 1
/obj/item/projectile/ion/on_hit(var/atom/target, var/blocked = 0)
empulse(target, pulse_range, pulse_range)
return 1
/obj/item/projectile/ion/small
name = "ion pulse"
@@ -23,22 +23,22 @@
sharp = 1
edge = 1
on_impact(var/atom/A)
explosion(A, -1, 0, 2)
..()
/obj/item/projectile/bullet/gyro/on_impact(var/atom/A)
explosion(A, -1, 0, 2)
..()
/obj/item/projectile/bullet/gyro/law
name ="high-ex round"
icon_state= "bolter"
damage = 15
on_hit(var/atom/target, var/blocked = 0)
explosion(target, -1, 0, 2)
sleep(0)
var/obj/T = target
var/throwdir = get_dir(firer,target)
T.throw_at(get_edge_target_turf(target, throwdir),3,3)
return 1
/obj/item/projectile/bullet/gyro/law/on_hit(var/atom/target, var/blocked = 0)
explosion(target, -1, 0, 2)
sleep(0)
var/obj/T = target
var/throwdir = get_dir(firer,target)
T.throw_at(get_edge_target_turf(target, throwdir),3,3)
return 1
/obj/item/projectile/temp
name = "freeze beam"
@@ -50,11 +50,11 @@
//var/temperature = 300
on_hit(var/atom/target, var/blocked = 0)//These two could likely check temp protection on the mob
if(istype(target, /mob/living))
var/mob/M = target
M.bodytemperature = -273
return 1
/obj/item/projectile/temp/on_hit(var/atom/target, var/blocked = 0)//These two could likely check temp protection on the mob
if(istype(target, /mob/living))
var/mob/M = target
M.bodytemperature = -273
return 1
/obj/item/projectile/meteor
name = "meteor"
@@ -65,26 +65,26 @@
nodamage = 1
check_armour = "bullet"
Bump(atom/A as mob|obj|turf|area)
if(A == firer)
loc = A.loc
return
/obj/item/projectile/meteor/Bump(atom/A as mob|obj|turf|area)
if(A == firer)
loc = A.loc
return
sleep(-1) //Might not be important enough for a sleep(-1) but the sleep/spawn itself is necessary thanks to explosions and metoerhits
sleep(-1) //Might not be important enough for a sleep(-1) but the sleep/spawn itself is necessary thanks to explosions and metoerhits
if(src)//Do not add to this if() statement, otherwise the meteor won't delete them
if(A)
if(src)//Do not add to this if() statement, otherwise the meteor won't delete them
if(A)
A.ex_act(2)
playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1)
A.ex_act(2)
playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1)
for(var/mob/M in range(10, src))
if(!M.stat && !istype(M, /mob/living/silicon/ai))\
shake_camera(M, 3, 1)
qdel(src)
return 1
else
return 0
for(var/mob/M in range(10, src))
if(!M.stat && !istype(M, /mob/living/silicon/ai))\
shake_camera(M, 3, 1)
qdel(src)
return 1
else
return 0
/obj/item/projectile/energy/floramut
name = "alpha somatoray"
@@ -94,36 +94,36 @@
nodamage = 1
check_armour = "energy"
on_hit(var/atom/target, var/blocked = 0)
var/mob/living/M = target
if(ishuman(target))
var/mob/living/carbon/human/H = M
if((H.species.flags & IS_PLANT) && (M.nutrition < 500))
if(prob(15))
H.apply_effect((rand(30,80)),IRRADIATE,blocked = H.getarmor(null, "rad"))
M.Weaken(5)
for (var/mob/V in viewers(src))
V.show_message("<span class='warning'>[M] writhes in pain as \his vacuoles boil.</span>", 3, "<span class='warning'>You hear the crunching of leaves.</span>", 2)
if(prob(35))
// for (var/mob/V in viewers(src)) //Public messages commented out to prevent possible metaish genetics experimentation and stuff. - Cheridan
// V.show_message("\red [M] is mutated by the radiation beam.", 3, "\red You hear the snapping of twigs.", 2)
if(prob(80))
randmutb(M)
domutcheck(M,null)
else
randmutg(M)
domutcheck(M,null)
/obj/item/projectile/energy/floramut/on_hit(var/atom/target, var/blocked = 0)
var/mob/living/M = target
if(ishuman(target))
var/mob/living/carbon/human/H = M
if((H.species.flags & IS_PLANT) && (M.nutrition < 500))
if(prob(15))
H.apply_effect((rand(30,80)),IRRADIATE,blocked = H.getarmor(null, "rad"))
M.Weaken(5)
for (var/mob/V in viewers(src))
V.show_message("<span class='warning'>[M] writhes in pain as \his vacuoles boil.</span>", 3, "<span class='warning'>You hear the crunching of leaves.</span>", 2)
if(prob(35))
// for (var/mob/V in viewers(src)) //Public messages commented out to prevent possible metaish genetics experimentation and stuff. - Cheridan
// V.show_message("\red [M] is mutated by the radiation beam.", 3, "\red You hear the snapping of twigs.", 2)
if(prob(80))
randmutb(M)
domutcheck(M,null)
else
M.adjustFireLoss(rand(5,15))
M.show_message("<span class='warning'>The radiation beam singes you!</span>")
// for (var/mob/V in viewers(src))
// V.show_message("\red [M] is singed by the radiation beam.", 3, "\red You hear the crackle of burning leaves.", 2)
else if(istype(target, /mob/living/carbon/))
// for (var/mob/V in viewers(src))
// V.show_message("The radiation beam dissipates harmlessly through [M]", 3)
M.show_message("<span class='notice'>The radiation beam dissipates harmlessly through your body.</span>")
else
return 1
randmutg(M)
domutcheck(M,null)
else
M.adjustFireLoss(rand(5,15))
M.show_message("<span class='warning'>The radiation beam singes you!</span>")
// for (var/mob/V in viewers(src))
// V.show_message("\red [M] is singed by the radiation beam.", 3, "\red You hear the crackle of burning leaves.", 2)
else if(istype(target, /mob/living/carbon/))
// for (var/mob/V in viewers(src))
// V.show_message("The radiation beam dissipates harmlessly through [M]", 3)
M.show_message("<span class='notice'>The radiation beam dissipates harmlessly through your body.</span>")
else
return 1
/obj/item/projectile/energy/florayield
name = "beta somatoray"
@@ -133,26 +133,26 @@
nodamage = 1
check_armour = "energy"
on_hit(var/atom/target, var/blocked = 0)
var/mob/M = target
if(ishuman(target)) //These rays make plantmen fat.
var/mob/living/carbon/human/H = M
if((H.species.flags & IS_PLANT) && (M.nutrition < 500))
M.nutrition += 30
else if (istype(target, /mob/living/carbon/))
M.show_message("<span class='notice'>The radiation beam dissipates harmlessly through your body.</span>")
else
return 1
/obj/item/projectile/energy/florayield/on_hit(var/atom/target, var/blocked = 0)
var/mob/M = target
if(ishuman(target)) //These rays make plantmen fat.
var/mob/living/carbon/human/H = M
if((H.species.flags & IS_PLANT) && (M.nutrition < 500))
M.nutrition += 30
else if (istype(target, /mob/living/carbon/))
M.show_message("<span class='notice'>The radiation beam dissipates harmlessly through your body.</span>")
else
return 1
/obj/item/projectile/beam/mindflayer
name = "flayer ray"
on_hit(var/atom/target, var/blocked = 0)
if(ishuman(target))
var/mob/living/carbon/human/M = target
M.adjustBrainLoss(5)
M.hallucination += 20
/obj/item/projectile/beam/mindflayer/on_hit(var/atom/target, var/blocked = 0)
if(ishuman(target))
var/mob/living/carbon/human/M = target
M.adjustBrainLoss(5)
M.hallucination += 20
/obj/item/projectile/bullet/trod
name ="tungsten rod"
@@ -162,9 +162,9 @@
sharp = 1
edge = 1
on_impact(var/atom/A)
explosion(A, 0, 0, 4)
..()
/obj/item/projectile/bullet/trod/on_impact(var/atom/A)
explosion(A, 0, 0, 4)
..()
/obj/item/projectile/chameleon
name = "bullet"