diff --git a/baystation12.dme b/baystation12.dme index a96b3f20b3..34471cc192 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1107,6 +1107,7 @@ #include "code\modules\projectiles\guns\projectile\pistol.dm" #include "code\modules\projectiles\guns\projectile\pneumatic.dm" #include "code\modules\projectiles\guns\projectile\revolver.dm" +#include "code\modules\projectiles\guns\projectile\rocket.dm" #include "code\modules\projectiles\guns\projectile\shotgun.dm" #include "code\modules\projectiles\projectile\animate.dm" #include "code\modules\projectiles\projectile\beams.dm" diff --git a/code/modules/projectiles/ammunition/bullets.dm b/code/modules/projectiles/ammunition/bullets.dm index a2b11b7ffc..0063d0b2a9 100644 --- a/code/modules/projectiles/ammunition/bullets.dm +++ b/code/modules/projectiles/ammunition/bullets.dm @@ -98,3 +98,10 @@ desc = "A 7.62 bullet casing." caliber = "a762" projectile_type = "/obj/item/projectile/bullet/a762" + +/obj/item/ammo_casing/rocket + name = "rocket shell" + desc = "A high explosive designed to be fired from a launcher." + icon_state = "rocketshell" + projectile_type = "/obj/item/missile" + caliber = "rocket" diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index bcc619851c..3f10f1f665 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -193,4 +193,49 @@ obj/item/weapon/gun/energy/staff/focus charge_cost = 100 user << "\red The [src.name] will now strike only a single person." projectile_type = "/obj/item/projectile/forcebolt" - */ \ No newline at end of file + */ + +/obj/item/weapon/gun/energy/toxgun + name = "plasma pistol" + desc = "A specialized firearm designed to fire lethal bolts of toxins." + icon_state = "toxgun" + fire_sound = 'sound/effects/stealthoff.ogg' + w_class = 3.0 + origin_tech = "combat=5;plasmatech=4" + projectile_type = "/obj/item/projectile/energy/plasma" + +/obj/item/weapon/gun/energy/sniperrifle + name = "L.W.A.P. Sniper Rifle" + desc = "A rifle constructed of lightweight materials, fitted with a SMART aiming-system scope." + icon = 'icons/obj/gun.dmi' + icon_state = "sniper" + fire_sound = 'sound/weapons/marauder.ogg' + origin_tech = "combat=6;materials=5;powerstorage=4" + projectile_type = "/obj/item/projectile/beam/sniper" + slot_flags = SLOT_BACK + charge_cost = 250 + fire_delay = 35 + w_class = 4.0 + + var/zoom = 0 + + dropped(mob/user) + usr.client.view = world.view + zoom = 0 + +/obj/item/weapon/gun/energy/sniperrifle/verb/zoom() + set category = "Special Verbs" + set name = "Zoom" + set popup_menu = 0 + if(usr.stat || !(istype(usr,/mob/living/carbon/human))) + usr << "No." + return + + src.zoom = !src.zoom + usr << ("Zoom mode [zoom?"en":"dis"]abled.") + if(zoom) + usr.client.view = 12 + usr << sound('sound/mecha/imag_enh.ogg',volume=50) + else + usr.client.view = world.view//world.view - default mob view size + return \ No newline at end of file diff --git a/code/modules/projectiles/guns/projectile/rocket.dm b/code/modules/projectiles/guns/projectile/rocket.dm new file mode 100644 index 0000000000..da16b4a2a5 --- /dev/null +++ b/code/modules/projectiles/guns/projectile/rocket.dm @@ -0,0 +1,52 @@ +/obj/item/weapon/gun/rocketlauncher + var/projectile + name = "rocket launcher" + desc = "MAGGOT." + icon_state = "rocket" + item_state = "rocket" + w_class = 4.0 + throw_speed = 2 + throw_range = 10 + force = 5.0 + flags = FPRINT | TABLEPASS | CONDUCT | USEDELAY + origin_tech = "combat=8;materials=5" + projectile = /obj/item/missile + var/missile_speed = 2 + var/missile_range = 30 + var/max_rockets = 1 + var/list/rockets = new/list() + +/obj/item/weapon/gun/rocketlauncher/examine() + set src in view() + ..() + if (!(usr in view(2)) && usr!=src.loc) return + usr << "\blue [rockets.len] / [max_rockets] rockets." + +/obj/item/weapon/gun/rocketlauncher/attackby(obj/item/I as obj, mob/user as mob) + if(istype(I, /obj/item/ammo_casing/rocket)) + if(rockets.len < max_rockets) + user.drop_item() + I.loc = src + rockets += I + user << "\blue You put the rocket in [src]." + user << "\blue [rockets.len] / [max_rockets] rockets." + else + usr << "\red [src] cannot hold more rockets." + +/obj/item/weapon/gun/rocketlauncher/can_fire() + return rockets.len + +/obj/item/weapon/gun/rocketlauncher/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0) + if(rockets.len) + var/obj/item/ammo_casing/rocket/I = rockets[1] + var/obj/item/missile/M = new projectile(user.loc) + playsound(user.loc, 'sound/effects/bang.ogg', 50, 1) + M.primed = 1 + M.throw_at(target, missile_range, missile_speed) + message_admins("[key_name_admin(user)] fired a rocket from a rocket launcher ([src.name]).") + log_game("[key_name_admin(user)] used a rocket launcher ([src.name]).") + rockets -= I + del(I) + return + else + usr << "\red [src] is empty." \ No newline at end of file diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 3024ea1aa4..f9d2ea73f1 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -160,4 +160,12 @@ var/list/beam_master = list() var/mob/living/carbon/human/M = target if((istype(M.wear_suit, /obj/item/clothing/suit/bluetag))||(istype(M.wear_suit, /obj/item/clothing/suit/redtag))) M.Weaken(5) - return 1 \ No newline at end of file + return 1 + +/obj/item/projectile/beam/sniper + name = "sniper beam" + icon_state = "xray" + damage = 60 + stun = 5 + weaken = 5 + stutter = 5 \ No newline at end of file diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index b8789eca59..6f719dafc9 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -59,5 +59,10 @@ damage_type = TOX weaken = 5 - +/obj/item/projectile/energy/plasma + name = "plasma bolt" + icon_state = "energy" + damage = 20 + damage_type = TOX + irradiate = 20 diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index b9d25c2677..05fe75b824 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -1528,6 +1528,14 @@ datum/design/stunshell materials = list("$metal" = 4000) build_path = "/obj/item/ammo_casing/shotgun/stunshell" +datum/design/plasmapistol + name = "plasma pistol" + desc = "A specialized firearm designed to fire lethal bolts of toxins." + id = "ppistol" + req_tech = list("combat" = 5, "plasmatech" = 4) + build_type = PROTOLATHE + materials = list("$metal" = 5000, "$glass" = 1000, "$plasma" = 3000) + build_path = "/obj/item/weapon/gun/energy/toxgun" ///////////////////////////////////////// /////////////////Mining////////////////// ///////////////////////////////////////// diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index f2e678f1a0..94aba05f82 100644 Binary files a/icons/mob/back.dmi and b/icons/mob/back.dmi differ diff --git a/icons/mob/items_lefthand.dmi b/icons/mob/items_lefthand.dmi index b15d273426..2dc326dccb 100644 Binary files a/icons/mob/items_lefthand.dmi and b/icons/mob/items_lefthand.dmi differ diff --git a/icons/mob/items_righthand.dmi b/icons/mob/items_righthand.dmi index c3c098b0a2..f066c58042 100644 Binary files a/icons/mob/items_righthand.dmi and b/icons/mob/items_righthand.dmi differ diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index b5a6f7f39d..84aa670c5a 100644 Binary files a/icons/obj/ammo.dmi and b/icons/obj/ammo.dmi differ diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi index 8dd01d7d2c..ece6723b62 100644 Binary files a/icons/obj/gun.dmi and b/icons/obj/gun.dmi differ