mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 10:43:20 +00:00
Merge branch 'master' of https://github.com/PolarisSS13/Polaris into 10/20/2017_syndie_borgs_are_back
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
icon_state = "coilgun"
|
||||
item_state = "coilgun"
|
||||
icon = 'icons/obj/railgun.dmi'
|
||||
// one_hand_penalty = 1
|
||||
// one_handed_penalty = 1
|
||||
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 4, TECH_ILLEGAL = 2, TECH_MAGNET = 4)
|
||||
w_class = ITEMSIZE_LARGE
|
||||
|
||||
@@ -193,3 +193,66 @@
|
||||
qdel(src)
|
||||
|
||||
return new projectile_type(src)
|
||||
|
||||
/obj/item/weapon/gun/magnetic/fuelrod
|
||||
name = "Fuel-Rod Cannon"
|
||||
desc = "A bulky weapon designed to fire reactor core fuel rods at absurd velocities... who thought this was a good idea?!"
|
||||
description_antag = "This device is capable of firing reactor fuel assemblies, acquired from a R-UST fuel compressor and an appropriate fueltype. Be warned, Supermatter rods may have unforseen consequences."
|
||||
description_fluff = "Morpheus' second entry into the arms manufacturing field, the Morpheus B.F.G, or 'Big Fuel-rod Gun' made some noise when it was initially sent to the market. By noise, they mean it was rapidly declared 'incredibly dangerous to the wielder and civilians within a mile radius alike'."
|
||||
icon_state = "fuelrodgun"
|
||||
item_state = "coilgun"
|
||||
icon = 'icons/obj/railgun.dmi'
|
||||
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 4, TECH_PHORON = 4, TECH_ILLEGAL = 5, TECH_MAGNET = 4)
|
||||
w_class = ITEMSIZE_LARGE
|
||||
|
||||
removable_components = TRUE
|
||||
gun_unreliable = 0
|
||||
|
||||
load_type = /obj/item/weapon/fuel_assembly
|
||||
projectile_type = /obj/item/projectile/bullet/magnetic/fuelrod
|
||||
|
||||
power_cost = 500
|
||||
|
||||
/obj/item/weapon/gun/magnetic/fuelrod/consume_next_projectile()
|
||||
if(!check_ammo() || !capacitor || capacitor.charge < power_cost)
|
||||
return
|
||||
|
||||
if(loaded) //Safety.
|
||||
if(istype(loaded, /obj/item/weapon/fuel_assembly))
|
||||
var/obj/item/weapon/fuel_assembly/rod = loaded
|
||||
if(rod.fuel_type == "composite" || rod.fuel_type == "deuterium") //Safety check for rods spawned in without a fueltype.
|
||||
projectile_type = /obj/item/projectile/bullet/magnetic/fuelrod
|
||||
else if(rod.fuel_type == "tritium")
|
||||
projectile_type = /obj/item/projectile/bullet/magnetic/fuelrod/tritium
|
||||
else if(rod.fuel_type == "phoron")
|
||||
projectile_type = /obj/item/projectile/bullet/magnetic/fuelrod/phoron
|
||||
else if(rod.fuel_type == "supermatter")
|
||||
projectile_type = /obj/item/projectile/bullet/magnetic/fuelrod/supermatter
|
||||
visible_message("<span class='danger'>The barrel of \the [src] glows a blinding white!</span>")
|
||||
spawn(5)
|
||||
visible_message("<span class='danger'>\The [src] begins to rattle, its acceleration chamber collapsing in on itself!</span>")
|
||||
removable_components = FALSE
|
||||
spawn(15)
|
||||
audible_message("<span class='critical'>\The [src]'s power supply begins to overload as the device crumples!</span>") //Why are you still holding this?
|
||||
playsound(loc, 'sound/effects/grillehit.ogg', 10, 1)
|
||||
var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread()
|
||||
var/turf/T = get_turf(src)
|
||||
sparks.set_up(2, 1, T)
|
||||
sparks.start()
|
||||
spawn(15)
|
||||
visible_message("<span class='critical'>\The [src] explodes in a blinding white light!</span>")
|
||||
explosion(src.loc, -1, 1, 2, 3)
|
||||
qdel(src)
|
||||
else
|
||||
projectile_type = /obj/item/projectile/bullet/magnetic/fuelrod
|
||||
|
||||
use_ammo()
|
||||
capacitor.use(power_cost)
|
||||
update_icon()
|
||||
|
||||
return new projectile_type(src)
|
||||
|
||||
/obj/item/weapon/gun/magnetic/fuelrod/New()
|
||||
cell = new /obj/item/weapon/cell/high
|
||||
capacitor = new /obj/item/weapon/stock_parts/capacitor
|
||||
. = ..()
|
||||
|
||||
@@ -67,9 +67,9 @@
|
||||
w_class = ITEMSIZE_NO_CONTAINER
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, one_hand_penalty=1, burst_accuracy=null, dispersion=null),
|
||||
list(mode_name="short bursts", burst=3, fire_delay=null, move_delay=5, one_hand_penalty=2, burst_accuracy=list(0,-1,-1), dispersion=list(0.0, 0.6, 1.0)),
|
||||
list(mode_name="long bursts", burst=6, fire_delay=null, move_delay=10, one_hand_penalty=2, burst_accuracy=list(0,-1,-1,-1,-2), dispersion=list(0.6, 0.6, 1.0, 1.0, 1.2)),
|
||||
list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, one_handed_penalty=1, burst_accuracy=null, dispersion=null),
|
||||
list(mode_name="short bursts", burst=3, fire_delay=null, move_delay=5, one_handed_penalty=2, burst_accuracy=list(0,-1,-1), dispersion=list(0.0, 0.6, 1.0)),
|
||||
list(mode_name="long bursts", burst=6, fire_delay=null, move_delay=10, one_handed_penalty=2, burst_accuracy=list(0,-1,-1,-1,-2), dispersion=list(0.6, 0.6, 1.0, 1.0, 1.2)),
|
||||
)
|
||||
|
||||
/obj/item/weapon/gun/magnetic/railgun/automatic/examine(var/mob/user)
|
||||
@@ -94,8 +94,8 @@
|
||||
fire_sound = 'sound/weapons/rapidslice.ogg'
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, one_hand_penalty=1, burst_accuracy=null, dispersion=null),
|
||||
list(mode_name="short bursts", burst=3, fire_delay=null, move_delay=5, one_hand_penalty=2, burst_accuracy=list(0,-1,-1), dispersion=list(0.0, 0.6, 1.0)),
|
||||
list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, one_handed_penalty=1, burst_accuracy=null, dispersion=null),
|
||||
list(mode_name="short bursts", burst=3, fire_delay=null, move_delay=5, one_handed_penalty=2, burst_accuracy=list(0,-1,-1), dispersion=list(0.0, 0.6, 1.0)),
|
||||
)
|
||||
|
||||
/obj/item/weapon/gun/magnetic/railgun/flechette/out_of_ammo()
|
||||
|
||||
@@ -333,8 +333,8 @@
|
||||
else if(!bumped)
|
||||
tracer_effect(effect_transform)
|
||||
|
||||
if(incendiary >= 2)
|
||||
var/trail_volume = (flammability * 0.10)
|
||||
if(incendiary >= 2 && !istype(src.loc, /turf/simulated/wall))
|
||||
var/trail_volume = (flammability * 0.20)
|
||||
new /obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel(src.loc, trail_volume, src.dir)
|
||||
|
||||
if(!hitscan)
|
||||
|
||||
@@ -18,4 +18,100 @@
|
||||
name = "flechette"
|
||||
icon_state = "flechette"
|
||||
damage = 20
|
||||
armor_penetration = 100
|
||||
armor_penetration = 100
|
||||
|
||||
/obj/item/projectile/bullet/magnetic/fuelrod
|
||||
name = "fuel rod"
|
||||
icon_state = "fuel-deuterium"
|
||||
damage = 30
|
||||
stun = 1
|
||||
weaken = 0
|
||||
agony = 30
|
||||
incendiary = 1
|
||||
flammability = 0 //Deuterium and Tritium are both held in water, but the object moving so quickly will ignite the target.
|
||||
penetrating = 2
|
||||
embed_chance = 0
|
||||
armor_penetration = 40
|
||||
kill_count = 20
|
||||
|
||||
var/searing = 0 //Does this fuelrod ignore shields?
|
||||
var/detonate_travel = 0 //Will this fuelrod explode when it reaches maximum distance?
|
||||
var/detonate_mob = 0 //Will this fuelrod explode when it hits a mob?
|
||||
var/energetic_impact = 0 //Does this fuelrod cause a bright flash on impact with a mob?
|
||||
|
||||
/obj/item/projectile/bullet/magnetic/fuelrod/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null) //Future-proofing. Special effects for impact.
|
||||
if(istype(target,/mob/living))
|
||||
var/mob/living/V = target
|
||||
if(detonate_mob)
|
||||
if(V.loc)
|
||||
explosion(V.loc, -1, -1, 2, 3)
|
||||
|
||||
if(energetic_impact)
|
||||
var/eye_coverage = 0
|
||||
for(var/mob/living/carbon/M in viewers(world.view, location))
|
||||
eye_coverage = 0
|
||||
if(iscarbon(M))
|
||||
eye_coverage = M.eyecheck()
|
||||
if(eye_coverage < 2)
|
||||
M.flash_eyes()
|
||||
M.Stun(2)
|
||||
M.Weaken(10)
|
||||
|
||||
if(searing)
|
||||
if(blocked)
|
||||
blocked = 0
|
||||
|
||||
return ..(target, blocked, def_zone)
|
||||
|
||||
/obj/item/projectile/bullet/magnetic/fuelrod/on_impact(var/atom/A) //Future-proofing, again. In the event new fuel rods are introduced, and have special effects for when they stop flying.
|
||||
if(src.loc)
|
||||
if(detonate_travel && detonate_mob)
|
||||
visible_message("<span class='warning'>\The [src] shatters in a violent explosion!</span>")
|
||||
explosion(src.loc, 1, 1, 3, 4)
|
||||
else if(detonate_travel)
|
||||
visible_message("<span class='warning'>\The [src] explodes in a shower of embers!</span>")
|
||||
explosion(src.loc, -1, 1, 2, 3)
|
||||
..(A)
|
||||
|
||||
/obj/item/projectile/bullet/magnetic/fuelrod/tritium
|
||||
icon_state = "fuel-tritium"
|
||||
damage = 40
|
||||
flammability = -1
|
||||
armor_penetration = 50
|
||||
penetrating = 3
|
||||
|
||||
/obj/item/projectile/bullet/magnetic/fuelrod/phoron
|
||||
name = "blazing fuel rod"
|
||||
icon_state = "fuel-phoron"
|
||||
damage = 35
|
||||
incendiary = 2
|
||||
flammability = 2
|
||||
armor_penetration = 60
|
||||
penetrating = 5
|
||||
irradiate = 20
|
||||
detonate_mob = 1
|
||||
|
||||
/obj/item/projectile/bullet/magnetic/fuelrod/supermatter
|
||||
name = "painfully incandescent fuel rod"
|
||||
icon_state = "fuel-supermatter"
|
||||
damage = 15
|
||||
incendiary = 2
|
||||
flammability = 4
|
||||
weaken = 2
|
||||
armor_penetration = 100
|
||||
penetrating = 100 //Theoretically, this shouldn't stop flying for a while, unless someone lines it up with a wall or fires it into a mountain.
|
||||
irradiate = 120
|
||||
kill_count = 75
|
||||
searing = 1
|
||||
detonate_travel = 1
|
||||
detonate_mob = 1
|
||||
energetic_impact = 1
|
||||
|
||||
/obj/item/projectile/bullet/magnetic/fuelrod/supermatter/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null) //You cannot touch the supermatter without disentigrating. Assumedly, this is true for condensed rods of it flying at relativistic speeds.
|
||||
if(istype(target,/turf/simulated/wall) || istype(target,/mob/living))
|
||||
target.visible_message("<span class='danger'>The [src] burns a perfect hole through \the [target] with a blinding flash!</span>")
|
||||
playsound(target.loc, 'sound/effects/teleport.ogg', 40, 0)
|
||||
return ..(target, blocked, def_zone)
|
||||
|
||||
/obj/item/projectile/bullet/magnetic/fuelrod/supermatter/check_penetrate()
|
||||
return 1
|
||||
Reference in New Issue
Block a user