diff --git a/baystation12.dme b/baystation12.dme index 234846d3ed7..ef59c4d2ddf 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -5,63 +5,6 @@ // END_INTERNALS // BEGIN_FILE_DIR #define FILE_DIR . -#define FILE_DIR "code" -#define FILE_DIR "code/TriDimension" -#define FILE_DIR "code/WorkInProgress" -#define FILE_DIR "code/WorkInProgress/Cael_Aislinn" -#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Jungle" -#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Rust" -#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/ShieldGen" -#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Supermatter" -#define FILE_DIR "code/WorkInProgress/Susan" -#define FILE_DIR "html" -#define FILE_DIR "icons" -#define FILE_DIR "icons/48x48" -#define FILE_DIR "icons/ass" -#define FILE_DIR "icons/effects" -#define FILE_DIR "icons/mecha" -#define FILE_DIR "icons/misc" -#define FILE_DIR "icons/mob" -#define FILE_DIR "icons/mob/human_races" -#define FILE_DIR "icons/mob/otherHuman" -#define FILE_DIR "icons/NTOS" -#define FILE_DIR "icons/obj" -#define FILE_DIR "icons/obj/assemblies" -#define FILE_DIR "icons/obj/atmospherics" -#define FILE_DIR "icons/obj/clothing" -#define FILE_DIR "icons/obj/doors" -#define FILE_DIR "icons/obj/flora" -#define FILE_DIR "icons/obj/machines" -#define FILE_DIR "icons/obj/pipes" -#define FILE_DIR "icons/obj/power_cond" -#define FILE_DIR "icons/pda_icons" -#define FILE_DIR "icons/spideros_icons" -#define FILE_DIR "icons/stamp_icons" -#define FILE_DIR "icons/Testing" -#define FILE_DIR "icons/turf" -#define FILE_DIR "icons/vending_icons" -#define FILE_DIR "nano" -#define FILE_DIR "nano/images" -#define FILE_DIR "sound" -#define FILE_DIR "sound/AI" -#define FILE_DIR "sound/ambience" -#define FILE_DIR "sound/effects" -#define FILE_DIR "sound/effects/turret" -#define FILE_DIR "sound/effects/wind" -#define FILE_DIR "sound/hallucinations" -#define FILE_DIR "sound/items" -#define FILE_DIR "sound/machines" -#define FILE_DIR "sound/mecha" -#define FILE_DIR "sound/misc" -#define FILE_DIR "sound/music" -#define FILE_DIR "sound/piano" -#define FILE_DIR "sound/turntable" -#define FILE_DIR "sound/violin" -#define FILE_DIR "sound/voice" -#define FILE_DIR "sound/voice/Serithi" -#define FILE_DIR "sound/vox" -#define FILE_DIR "sound/vox_fem" -#define FILE_DIR "sound/weapons" // END_FILE_DIR // BEGIN_PREFERENCES #define DEBUG @@ -1246,10 +1189,10 @@ #include "code\modules\projectiles\guns\magic\wand.dm" #include "code\modules\projectiles\guns\projectile\automatic.dm" #include "code\modules\projectiles\guns\projectile\bow.dm" -#include "code\modules\projectiles\guns\projectile\launcher.dm" #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 61ea69a79ad..d1fbe81ea08 100644 --- a/code/modules/projectiles/ammunition/bullets.dm +++ b/code/modules/projectiles/ammunition/bullets.dm @@ -122,3 +122,11 @@ obj/item/ammo_casing/shotgun/dart/New() 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 9d9c76cf623..f47a718b932 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -149,4 +149,51 @@ obj/item/weapon/gun/energy/staff/focus desc = "Clown Planet's finest." icon_state = "energy" projectile_type = "/obj/item/projectile/clown" - fire_sound = 'sound/weapons/Gunshot_smg.ogg' \ No newline at end of file + fire_sound = 'sound/weapons/Gunshot_smg.ogg' + + + +/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 + +/obj/item/weapon/gun/energy/sniperrifle/dropped(mob/user) + user.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/launcher.dm b/code/modules/projectiles/guns/projectile/launcher.dm deleted file mode 100644 index a8a1292bde1..00000000000 --- a/code/modules/projectiles/guns/projectile/launcher.dm +++ /dev/null @@ -1,90 +0,0 @@ -/obj/item/weapon/gun/rocketlauncher - name = "rocket launcher" - desc = "Say hello to my little friend." - icon = 'icons/obj/gun.dmi' - icon_state = "launcher" - item_state = "launcher" - w_class = 4.0 - throw_speed = 2 - throw_range = 10 - force = 5.0 - var/list/rockets = new/list() - var/max_rockets = 1 - m_amt = 2000 - - examine() - set src in view() - ..() - if (!(usr in view(2)) && usr!=src.loc) return - usr << "\icon [src] Rocket launcher:" - if(rockets.len) - usr << "\blue [rockets] / [max_rockets] Rockets." - else - usr << "\blue 0 / [max_rockets] Rockets." - - attackby(obj/item/I as obj, mob/user as mob) - - if((istype(I, /obj/item/weapon/rocket))) - if(rockets.len < max_rockets) - user.drop_item() - I.loc = src - rockets += I - user << "\blue You put the rocket in the rocket launcher." - if(rockets.len) - user << "\blue [rockets.len] / [max_rockets] Rockets." - else - user << "\blue 0 / [max_rockets] Rockets." - else - usr << "\red The rocket launcher cannot hold more grenades." - - afterattack(obj/target, mob/user , flag) - - if (istype(target, /obj/item/weapon/storage/backpack )) - return - - else if (locate (/obj/structure/table, src.loc)) - return - - else if(target == user) - return - - if(rockets.len) - spawn(0) fire_rocket(target,user) - else - usr << "\red The rocket launcher is empty." - - proc - fire_rocket(atom/target, mob/user) - for(var/mob/O in viewers(world.view, user)) - O.show_message(text("\red [] fired a rocket!", user), 1) - user << "\red You fire the rocket launcher!" - - - var/obj/item/weapon/rocket/R = rockets[1] //Now with less copypasta! - rockets -= R - R.loc = user.loc - R.primed = 1 - R.throw_at(target, 30, 2) - message_admins("[key_name_admin(user)] fired a rocket ([R.name]) from a rocket launcher ([src.name]).") - log_game("[key_name_admin(user)] used a rocket ([src.name]).") - -// R.icon_state = initial(icon_state) + "_active" - playsound(usr.loc, fire_sound, 50, 1) - return - - - -/obj/item/weapon/rocket - name = "rocket" - icon = 'icons/obj/grenade.dmi' - icon_state = "rocket" - var/primed = null - throwforce = 15 - - throw_impact(atom/hit_atom) - if(primed) - explosion(hit_atom, 0, 0, 2, 4) - del(src) - else - ..() - 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 00000000000..e25a6ae3a9c --- /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 = "Say hello to my little friend" + 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 77a40970929..50fbd487943 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -321,4 +321,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 1db53f9f858..11d98dc939e 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -61,3 +61,9 @@ +/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 b4acfd4e885..ceb4650f2a9 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -1529,6 +1529,15 @@ datum/design/xray build_path = "/obj/item/weapon/gun/energy/xray" locked = 1 +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 bdcc146b3d8..df5bf412282 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 e7d7c1ae94f..f06f6faa0a1 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 43c7016a2e0..35da3968cc1 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 b5ece3cd4e1..371cf3e5c25 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 96c8a1cd18d..cf7eeb9c1d2 100644 Binary files a/icons/obj/gun.dmi and b/icons/obj/gun.dmi differ