Files
Bubberstation/code/modules/projectiles/projectile/bullets.dm
phil235 3b8af6f5ff Fixes grille/New() not calling ..()
Blood drips icons are now in blood.dmi instead of drip.dmi (which only had the 5 drip sprites).
Moved projectiles, guns, casings and ammo boxes to be in the right files. Please don't put your gun with its projectile, ammo casing and ammo box all the same file.
I split growing.dmi into 5 smaller files so we don't get close to the 512 icon limit again. Each seed has a var to indicate which icon file to use when planted.
Fixes code for heavy pulse laser projectile to be less awful.
2016-06-11 23:18:26 +02:00

323 lines
7.5 KiB
Plaintext

/obj/item/projectile/bullet
name = "bullet"
icon_state = "bullet"
damage = 60
damage_type = BRUTE
nodamage = 0
flag = "bullet"
hitsound_wall = "ricochet"
/obj/item/projectile/bullet/weakbullet //beanbag, heavy stamina damage
damage = 5
stamina = 80
/obj/item/projectile/bullet/weakbullet2 //detective revolver instastuns, but multiple shots are better for keeping punks down
damage = 15
weaken = 3
stamina = 50
/obj/item/projectile/bullet/weakbullet3
damage = 20
/obj/item/projectile/bullet/toxinbullet
damage = 15
damage_type = TOX
/obj/item/projectile/bullet/incendiary/firebullet
damage = 10
/obj/item/projectile/bullet/armourpiercing
damage = 17
armour_penetration = 10
/obj/item/projectile/bullet/pellet
name = "pellet"
damage = 15
/obj/item/projectile/bullet/pellet/weak/New()
damage = 6
range = rand(8)
/obj/item/projectile/bullet/pellet/weak/on_range()
var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread
sparks.set_up(1, 1, src)
sparks.start()
..()
/obj/item/projectile/bullet/pellet/overload/New()
damage = 3
range = rand(10)
/obj/item/projectile/bullet/pellet/overload/on_hit(atom/target, blocked = 0)
..()
explosion(target, 0, 0, 2)
/obj/item/projectile/bullet/pellet/overload/on_range()
explosion(src, 0, 0, 2)
var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread
sparks.set_up(3, 3, src)
sparks.start()
..()
/obj/item/projectile/bullet/midbullet
damage = 20
stamina = 65 //two round bursts from the c20r knocks people down
/obj/item/projectile/bullet/midbullet2
damage = 25
/obj/item/projectile/bullet/midbullet3
damage = 30
/obj/item/projectile/bullet/heavybullet
damage = 35
/obj/item/projectile/bullet/rpellet
damage = 3
stamina = 25
/obj/item/projectile/bullet/stunshot //taser slugs for shotguns, nothing special
name = "stunshot"
damage = 5
stun = 5
weaken = 5
stutter = 5
jitter = 20
range = 7
icon_state = "spark"
color = "#FFFF00"
/obj/item/projectile/bullet/incendiary/on_hit(atom/target, blocked = 0)
. = ..()
if(iscarbon(target))
var/mob/living/carbon/M = target
M.adjust_fire_stacks(4)
M.IgniteMob()
/obj/item/projectile/bullet/incendiary/shell
name = "incendiary slug"
damage = 20
/obj/item/projectile/bullet/incendiary/shell/Move()
..()
var/turf/location = get_turf(src)
if(location)
PoolOrNew(/obj/effect/hotspot, location)
location.hotspot_expose(700, 50, 1)
/obj/item/projectile/bullet/incendiary/shell/dragonsbreath
name = "dragonsbreath round"
damage = 5
/obj/item/projectile/bullet/meteorshot
name = "meteor"
icon = 'icons/obj/meteor.dmi'
icon_state = "dust"
damage = 30
weaken = 8
stun = 8
hitsound = 'sound/effects/meteorimpact.ogg'
/obj/item/projectile/bullet/meteorshot/weak
damage = 10
weaken = 4
stun = 4
/obj/item/projectile/bullet/honker
damage = 0
weaken = 5
stun = 5
forcedodge = 1
nodamage = 1
hitsound = 'sound/items/bikehorn.ogg'
icon = 'icons/obj/hydroponics/harvest.dmi'
icon_state = "banana"
range = 200
/obj/item/projectile/bullet/honker/New()
..()
SpinAnimation()
/obj/item/projectile/bullet/meteorshot/on_hit(atom/target, blocked = 0)
. = ..()
if(istype(target, /atom/movable))
var/atom/movable/M = target
var/atom/throw_target = get_edge_target_turf(M, get_dir(src, get_step_away(M, src)))
M.throw_at(throw_target, 3, 2)
/obj/item/projectile/bullet/meteorshot/New()
..()
SpinAnimation()
/obj/item/projectile/bullet/mime
damage = 20
/obj/item/projectile/bullet/mime/on_hit(atom/target, blocked = 0)
. = ..()
if(iscarbon(target))
var/mob/living/carbon/M = target
M.silent = max(M.silent, 10)
/obj/item/projectile/bullet/dart
name = "dart"
icon_state = "cbbolt"
damage = 6
var/piercing = 0
/obj/item/projectile/bullet/dart/New()
..()
create_reagents(50)
reagents.set_reacting(FALSE)
/obj/item/projectile/bullet/dart/on_hit(atom/target, blocked = 0, hit_zone)
if(iscarbon(target))
var/mob/living/carbon/M = target
if(blocked != 100) // not completely blocked
if(M.can_inject(null,0,hit_zone,piercing)) // Pass the hit zone to see if it can inject by whether it hit the head or the body.
..()
reagents.reaction(M, INJECT)
reagents.trans_to(M, reagents.total_volume)
return 1
else
blocked = 100
target.visible_message("<span class='danger'>The [name] was deflected!</span>", \
"<span class='userdanger'>You were protected against the [name]!</span>")
..(target, blocked, hit_zone)
reagents.set_reacting(TRUE)
reagents.handle_reactions()
return 1
/obj/item/projectile/bullet/dart/metalfoam/New()
..()
reagents.add_reagent("aluminium", 15)
reagents.add_reagent("foaming_agent", 5)
reagents.add_reagent("facid", 5)
//This one is for future syringe guns update
/obj/item/projectile/bullet/dart/syringe
name = "syringe"
icon = 'icons/obj/chemical.dmi'
icon_state = "syringeproj"
//Piercing Syringe
/obj/item/projectile/bullet/dart/syringe/piercing
piercing = 1
/obj/item/projectile/bullet/neurotoxin
name = "neurotoxin spit"
icon_state = "neurotoxin"
damage = 5
damage_type = TOX
weaken = 5
/obj/item/projectile/bullet/neurotoxin/on_hit(atom/target, blocked = 0)
if(isalien(target))
weaken = 0
nodamage = 1
. = ..() // Execute the rest of the code.
//// SNIPER BULLETS
/obj/item/projectile/bullet/sniper
damage = 70
stun = 5
weaken = 5
armour_penetration = 50
var/breakthings = TRUE
/obj/item/projectile/bullet/sniper/on_hit(atom/target, blocked = 0, hit_zone)
if((blocked != 100) && (!ismob(target) && breakthings))
target.ex_act(rand(1,2))
return ..()
/obj/item/projectile/bullet/sniper/soporific
armour_penetration = 0
nodamage = 1
stun = 0
weaken = 0
breakthings = FALSE
/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.Sleeping(20)
return ..()
/obj/item/projectile/bullet/sniper/haemorrhage
armour_penetration = 15
damage = 15
stun = 0
weaken = 0
breakthings = FALSE
/obj/item/projectile/bullet/sniper/haemorrhage/on_hit(atom/target, blocked = 0, hit_zone)
if((blocked != 100) && iscarbon(target))
var/mob/living/carbon/C = target
C.bleed(100)
return ..()
/obj/item/projectile/bullet/sniper/penetrator
icon_state = "gauss"
name = "penetrator round"
damage = 60
forcedodge = 1
stun = 0
weaken = 0
breakthings = FALSE
//// SAW BULLETS
/obj/item/projectile/bullet/saw
damage = 45
armour_penetration = 5
/obj/item/projectile/bullet/saw/bleeding
damage = 20
armour_penetration = 0
/obj/item/projectile/bullet/saw/bleeding/on_hit(atom/target, blocked = 0, hit_zone)
. = ..()
if((blocked != 100) && iscarbon(target))
var/mob/living/carbon/C = target
C.bleed(35)
/obj/item/projectile/bullet/saw/hollow
damage = 60
armour_penetration = -10
/obj/item/projectile/bullet/saw/ap
damage = 40
armour_penetration = 75
/obj/item/projectile/bullet/saw/incen
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(3)
M.IgniteMob()