diff --git a/code/defines/obj.dm b/code/defines/obj.dm index a01101514a..0a1882e5f9 100644 --- a/code/defines/obj.dm +++ b/code/defines/obj.dm @@ -72,18 +72,6 @@ unacidable = 1//Just to be sure. var/def_zone -/obj/beam/a_laser - name = "a laser" - icon = 'projectiles.dmi' - icon_state = "laser" - density = 1 - var/yo = null - var/xo = null - var/current = null - var/life = 50.0 - anchored = 1.0 - flags = TABLEPASS - /obj/beam/i_beam name = "i beam" icon = 'projectiles.dmi' @@ -112,40 +100,6 @@ anchored = 1.0 unacidable = 1 -/obj/bullet - name = "bullet" - icon = 'projectiles.dmi' - icon_state = "bullet" - density = 1 - throwforce = 0.1 //an attempt to make it possible to shoot your way through space - unacidable = 1//Just to be sure. - var/yo = null - var/xo = null - var/current = null - anchored = 1.0 - flags = TABLEPASS - var/def_zone - -/obj/bullet/weakbullet - -/obj/bullet/electrode - name = "electrode" - icon_state = "spark" - -/obj/bullet/teleshot - name = "teleshot" - icon_state = "spark" - var/failchance = 5 - var/obj/item/target = null - -/obj/bullet/cbbolt - name = "crossbow bolt" - icon_state = "cbbolt" - -/obj/bullet/neurodart - name = "acid" - icon_state = "toxin" - /obj/datacore name = "datacore" var/medical[] = list() diff --git a/code/defines/obj/clothing/suit.dm b/code/defines/obj/clothing/suit.dm index e6b027aa28..acc4722c5b 100644 --- a/code/defines/obj/clothing/suit.dm +++ b/code/defines/obj/clothing/suit.dm @@ -71,7 +71,7 @@ icon_state = "detective" item_state = "det_suit" body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS - allowed = list(/obj/item/weapon/gun/detectiverevolver,/obj/item/weapon/gun/revolver,/obj/item/weapon/ammo/a38,/obj/item/weapon/cigpacket,/obj/item/weapon/zippo,/obj/item/device/detective_scanner,/obj/item/device/taperecorder) + allowed = list(/obj/item/weapon/gun/projectile/detective,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/cigpacket,/obj/item/weapon/zippo,/obj/item/device/detective_scanner,/obj/item/device/taperecorder) armor = list(melee = 50, bullet = 40, laser = 30, taser = 10, bomb = 20, bio = 0, rad = 0) /obj/item/clothing/suit/judgerobe @@ -191,7 +191,7 @@ // ARMOR /obj/item/clothing/suit/armor - allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/gun/revolver,/obj/item/weapon/baton,/obj/item/weapon/handcuffs) + allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/gun/projectile,/obj/item/weapon/baton,/obj/item/weapon/handcuffs) /obj/item/clothing/suit/armor/vest name = "armor" @@ -283,7 +283,7 @@ icon_state = "deathsquad" item_state = "swat_suit" body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS - allowed = list(/obj/item/weapon/gun,/obj/item/weapon/ammo,/obj/item/weapon/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen) + allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen) slowdown = 1 armor = list(melee = 80, bullet = 60, laser = 50, taser = 25, bomb = 50, bio = 10, rad = 0) @@ -367,7 +367,7 @@ item_state = "space_suit_syndicate" desc = "Has a tag on it: Totally not property of of a hostile corporation, honest!" w_class = 3 - allowed = list(/obj/item/weapon/gun,/obj/item/weapon/ammo,/obj/item/weapon/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen) + allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen) slowdown = 1 armor = list(melee = 60, bullet = 50, laser = 30, taser = 15, bomb = 30, bio = 30, rad = 30) @@ -393,7 +393,7 @@ desc = "A unique, vaccum-proof suit of nano-enhanced armor designed specifically for Spider Clan assassins." icon_state = "s-ninja" item_state = "s-ninja_suit" - allowed = list(/obj/item/weapon/gun,/obj/item/weapon/ammo,/obj/item/weapon/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen) + allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen) radiation_protection = 0.75 slowdown = 1 armor = list(melee = 60, bullet = 50, laser = 30, taser = 15, bomb = 30, bio = 30, rad = 30) @@ -445,7 +445,7 @@ icon_state = "pirate" item_state = "pirate" w_class = 3 - allowed = list(/obj/item/weapon/gun,/obj/item/weapon/ammo,/obj/item/weapon/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen) + allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen) slowdown = 0 armor = list(melee = 60, bullet = 50, laser = 30, taser = 15, bomb = 30, bio = 30, rad = 30) diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 9a42e9f4bc..2117a21e51 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -124,6 +124,7 @@ /obj/item/weapon/spacecash/c1000 icon_state = "spacecash1000" +/* /obj/item/weapon/ammo name = "ammo" icon = 'ammo.dmi' @@ -207,7 +208,7 @@ icon_state = "38-7" amount_left = 7.0 m_amt = 10000 - +*/ /obj/item/device/mass_spectrometer desc = "A hand-held mass spectrometer which identifies trace chemicals in a blood sample." name = "mass-spectrometer" @@ -644,7 +645,7 @@ abstract = 1.0 item_state = "nothing" w_class = 5.0 - +/* /obj/item/weapon/gun name = "gun" icon = 'gun.dmi' @@ -850,7 +851,7 @@ force = 14.0 m_amt = 1000 origin_tech = "combat=2;materials=2" - +*/ /obj/item/weapon/hand_tele name = "hand tele" icon = 'device.dmi' @@ -1455,6 +1456,13 @@ Total SMES charging rate should not exceed total power generation rate, or an ov var/rigged = 0 // true if rigged to explode var/minor_fault = 0 //If not 100% reliable, it will build up faults. +/obj/item/weapon/cell/crap + name = "Nanotrassen Brand Rechargable AA Battery" + desc = "You can't top the plasma top." //TOTALLY TRADEMARK INFRINGEMENT + origin_tech = "powerstorage=0" + maxcharge = 500 + g_amt = 40 + /obj/item/weapon/cell/high name = "high-capacity power cell" origin_tech = "powerstorage=2" diff --git a/code/game/asteroid/asteroid.dm b/code/game/asteroid/asteroid.dm index fa0704e9d5..86f1fed15f 100644 --- a/code/game/asteroid/asteroid.dm +++ b/code/game/asteroid/asteroid.dm @@ -151,7 +151,7 @@ var/global/list/space_surprises = list(/obj/alien/facehugger, /obj/item/weapon/rcd_ammo, /obj/item/weapon/spacecash, /obj/item/weapon/cloaking_device, - /obj/item/weapon/gun/energy/teleport_gun, + // /obj/item/weapon/gun/energy/teleport_gun, /obj/item/weapon/rubber_chicken, /obj/item/weapon/sword/pirate ) diff --git a/code/game/gamemodes/extra/ninja_abilities.dm b/code/game/gamemodes/extra/ninja_abilities.dm index bda996c6d2..dc793bdb5e 100644 --- a/code/game/gamemodes/extra/ninja_abilities.dm +++ b/code/game/gamemodes/extra/ninja_abilities.dm @@ -208,7 +208,7 @@ This could be a lot better but I'm too tired atm.*/ return if (targloc == curloc) return - var/obj/bullet/neurodart/A = new /obj/bullet/neurodart(U.loc) + var/obj/item/projectile/dart/A = new /obj/item/projectile/dart(U.loc) A.current = curloc A.yo = targloc.y - curloc.y A.xo = targloc.x - curloc.x diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index a07793fbe3..6807c1e2b0 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -152,11 +152,9 @@ synd_mob.equip_if_possible(new /obj/item/clothing/head/helmet/swat(synd_mob), synd_mob.slot_head) synd_mob.equip_if_possible(new /obj/item/weapon/card/id/syndicate(synd_mob), synd_mob.slot_wear_id) synd_mob.equip_if_possible(new /obj/item/weapon/storage/backpack(synd_mob), synd_mob.slot_back) - synd_mob.equip_if_possible(new /obj/item/weapon/ammo/a357(synd_mob), synd_mob.slot_in_backpack) + synd_mob.equip_if_possible(new /obj/item/ammo_magazine(synd_mob), synd_mob.slot_in_backpack) synd_mob.equip_if_possible(new /obj/item/weapon/reagent_containers/pill/cyanide(synd_mob), synd_mob.slot_in_backpack) //Because it needed to be upgraded by someone - Micro - var/obj/item/weapon/gun/revolver/G = new /obj/item/weapon/gun/revolver(synd_mob) - G.bullets = 7 - synd_mob.equip_if_possible(G, synd_mob.slot_belt) + synd_mob.equip_if_possible(new /obj/item/weapon/gun/projectile(synd_mob), synd_mob.slot_belt) /datum/game_mode/nuclear/check_win() if (src.nuke_detonated) diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 05bd4dc7f3..c69cdf855f 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -116,7 +116,7 @@ datum var/obj/item/steal_target var/target_name var/global/list/possible_items = list( - "the captain's antique laser gun" = /obj/item/weapon/gun/energy/laser_gun/captain, + "the captain's antique laser gun" = /obj/item/weapon/gun/energy/laser/captain, "a hand teleporter" = /obj/item/weapon/hand_tele, "an RCD" = /obj/item/weapon/rcd, "a jetpack" = /obj/item/weapon/tank/jetpack, diff --git a/code/game/gamemodes/wizard/spells.dm b/code/game/gamemodes/wizard/spells.dm index 1edf677c35..908b9591e6 100644 --- a/code/game/gamemodes/wizard/spells.dm +++ b/code/game/gamemodes/wizard/spells.dm @@ -308,7 +308,7 @@ if (locate(/obj/item/weapon/gun/energy, M)) for(var/obj/item/weapon/gun/energy/G in M) - G.charges = 0 + G.power_supply.charge = 0 G.update_icon() if ((istype(M, /mob/living/carbon/human)) && (istype(M:glasses, /obj/item/clothing/glasses/thermal))) diff --git a/code/game/jobs/jobprocs.dm b/code/game/jobs/jobprocs.dm index 6c50fef85c..ee7724c71f 100644 --- a/code/game/jobs/jobprocs.dm +++ b/code/game/jobs/jobprocs.dm @@ -455,7 +455,7 @@ src.equip_if_possible(new /obj/item/clothing/gloves/black(src), slot_gloves) src.equip_if_possible(new /obj/item/clothing/glasses/sunglasses(src), slot_glasses) src.equip_if_possible(new /obj/item/clothing/mask/gas/emergency(src), slot_wear_mask) - src.equip_if_possible(new /obj/item/weapon/gun/energy/taser_gun(src), slot_s_store) + src.equip_if_possible(new /obj/item/weapon/gun/energy/taser(src), slot_s_store) src.equip_if_possible(new /obj/item/weapon/handcuffs(src), slot_in_backpack) src.equip_if_possible(new /obj/item/device/flash(src), slot_l_store) @@ -479,7 +479,7 @@ src.equip_if_possible(new /obj/item/weapon/storage/backpack/security (src), slot_back) src.equip_if_possible(new /obj/item/clothing/glasses/sunglasses(src), slot_glasses) src.equip_if_possible(new /obj/item/weapon/handcuffs(src), slot_in_backpack) - src.equip_if_possible(new /obj/item/weapon/gun/energy/general(src), slot_s_store) + src.equip_if_possible(new /obj/item/weapon/gun/energy(src), slot_s_store) src.equip_if_possible(new /obj/item/device/flash(src), slot_l_store) if ("Head of Personnel") @@ -503,10 +503,10 @@ src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes) src.equip_if_possible(new /obj/item/clothing/suit/armor/vest(src), slot_wear_suit) src.equip_if_possible(new /obj/item/weapon/storage/backpack(src), slot_back) - src.equip_if_possible(new /obj/item/weapon/ammo/shell/beanbag(src), slot_in_backpack) - src.equip_if_possible(new /obj/item/weapon/ammo/shell/beanbag(src), slot_in_backpack) - src.equip_if_possible(new /obj/item/weapon/ammo/shell/beanbag(src), slot_in_backpack) - src.equip_if_possible(new /obj/item/weapon/ammo/shell/beanbag(src), slot_in_backpack) + src.equip_if_possible(new /obj/item/ammo_casing/shotgun/beanbag(src), slot_in_backpack) + src.equip_if_possible(new /obj/item/ammo_casing/shotgun/beanbag(src), slot_in_backpack) + src.equip_if_possible(new /obj/item/ammo_casing/shotgun/beanbag(src), slot_in_backpack) + src.equip_if_possible(new /obj/item/ammo_casing/shotgun/beanbag(src), slot_in_backpack) if ("Chef") src.equip_if_possible(new /obj/item/clothing/under/rank/chef(src), slot_w_uniform) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index c33cf7cdd5..8682723042 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -243,7 +243,7 @@ var/global/list/autolathe_recipes = list( \ new /obj/item/weapon/circular_saw(), \ new /obj/item/device/t_scanner(), \ new /obj/item/weapon/reagent_containers/glass/bucket(), \ - new /obj/item/weapon/ammo/shell/blank(), \ + new /obj/item/ammo_casing/shotgun/blank(), \ new /obj/item/device/taperecorder(), \ new /obj/item/weapon/stock_parts/console_screen(), \ ) @@ -257,11 +257,11 @@ var/global/list/autolathe_recipes_hidden = list( \ new /obj/item/weapon/weldingtool/largetank(), \ new /obj/item/device/infra_sensor(), \ new /obj/item/weapon/handcuffs(), \ - new /obj/item/weapon/ammo/a357(), \ - new /obj/item/weapon/ammo/shell/gauge(), \ - new /obj/item/weapon/ammo/a38(), \ - new /obj/item/weapon/ammo/shell/beanbag(), \ - new /obj/item/weapon/ammo/shell/dart(), \ + new /obj/item/ammo_magazine(), \ + new /obj/item/ammo_casing/shotgun(), \ + new /obj/item/ammo_magazine/c38(), \ + new /obj/item/ammo_casing/shotgun/beanbag(), \ + new /obj/item/ammo_casing/shotgun/dart(), \ /* new /obj/item/weapon/shield/riot(), */ \ ) diff --git a/code/game/machinery/bots/ed209bot.dm b/code/game/machinery/bots/ed209bot.dm index 244aaecccd..50535fea18 100644 --- a/code/game/machinery/bots/ed209bot.dm +++ b/code/game/machinery/bots/ed209bot.dm @@ -613,10 +613,10 @@ Auto Patrol: []"}, if(src.allowed(perp)) //Corrupt cops cannot exist beep boop return 0 - if((istype(perp.l_hand, /obj/item/weapon/gun) && !istype(perp.l_hand, /obj/item/weapon/gun/shotgun)) || istype(perp.l_hand, /obj/item/weapon/baton)) + if((istype(perp.l_hand, /obj/item/weapon/gun) && !istype(perp.l_hand, /obj/item/weapon/gun/projectile/shotgun)) || istype(perp.l_hand, /obj/item/weapon/baton)) threatcount += 4 - if((istype(perp.r_hand, /obj/item/weapon/gun) && !istype(perp.r_hand, /obj/item/weapon/gun/shotgun)) || istype(perp.r_hand, /obj/item/weapon/baton)) + if((istype(perp.r_hand, /obj/item/weapon/gun) && !istype(perp.r_hand, /obj/item/weapon/gun/projectile/shotgun)) || istype(perp.r_hand, /obj/item/weapon/baton)) threatcount += 4 if(istype(perp:belt, /obj/item/weapon/gun) || istype(perp:belt, /obj/item/weapon/baton)) @@ -719,11 +719,11 @@ Auto Patrol: []"}, //if(lastfired && world.time - lastfired < 100) // playsound(src.loc, 'ed209_shoot.ogg', 50, 0) - var/obj/beam/a_laser/A + var/obj/item/projectile/A if (src.emagged) - A = new /obj/beam/a_laser( loc ) + A = new /obj/item/projectile/beam( loc ) else - A = new /obj/bullet/electrode( loc ) + A = new /obj/item/projectile/electrode( loc ) if (!( istype(U, /turf) )) //A = null @@ -835,7 +835,7 @@ Auto Patrol: []"}, src.build_step++ user << "\blue You wire the ED-209 assembly!" src.name = "Wired ED-209 Assembly" - else if (istype(W, /obj/item/weapon/gun/energy/taser_gun) && (src.build_step == 7)) + else if (istype(W, /obj/item/weapon/gun/energy/taser) && (src.build_step == 7)) src.build_step++ user << "You add the taser gun to [src]!" src.name = "Taser/Wired ED-209 Assembly" diff --git a/code/game/machinery/bots/secbot.dm b/code/game/machinery/bots/secbot.dm index 791e4425d2..e0f6d078ed 100644 --- a/code/game/machinery/bots/secbot.dm +++ b/code/game/machinery/bots/secbot.dm @@ -594,10 +594,10 @@ Auto Patrol: []"}, if(src.allowed(perp)) //Corrupt cops cannot exist beep boop return 0 - if((istype(perp.l_hand, /obj/item/weapon/gun) && !istype(perp.l_hand, /obj/item/weapon/gun/shotgun)) || istype(perp.l_hand, /obj/item/weapon/baton)) + if((istype(perp.l_hand, /obj/item/weapon/gun) && !istype(perp.l_hand, /obj/item/weapon/gun/projectile/shotgun)) || istype(perp.l_hand, /obj/item/weapon/baton)) threatcount += 4 - if((istype(perp.r_hand, /obj/item/weapon/gun) && !istype(perp.r_hand, /obj/item/weapon/gun/shotgun)) || istype(perp.r_hand, /obj/item/weapon/baton)) + if((istype(perp.r_hand, /obj/item/weapon/gun) && !istype(perp.r_hand, /obj/item/weapon/gun/projectile/shotgun)) || istype(perp.r_hand, /obj/item/weapon/baton)) threatcount += 4 if(istype(perp:belt, /obj/item/weapon/gun) || istype(perp:belt, /obj/item/weapon/baton)) diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 094aac09b6..6e801461cf 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -15,7 +15,7 @@ obj/machinery/recharger if (src.charging || src.charging2) return if (istype(G, /obj/item/weapon/gun/energy)) - if (istype(G, /obj/item/weapon/gun/energy/general/nuclear)) + if (istype(G, /obj/item/weapon/gun/energy/nuclear) || istype(G, /obj/item/weapon/gun/energy/crossbow)) user << "Your gun's recharge port was removed to make room for a miniaturized reactor." return user.drop_item() @@ -52,8 +52,8 @@ obj/machinery/recharger /obj/machinery/recharger/process() if ((src.charging) && ! (stat & NOPOWER) ) - if (src.charging.charges < src.charging.maximum_charges) - src.charging.charges++ + if (src.charging.power_supply.charge < src.charging.power_supply.maxcharge) + src.charging.power_supply.give(100) src.icon_state = "recharger1" use_power(250) else diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index 56755ddfcc..d74515ad58 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -100,9 +100,9 @@ if(istype(O,/obj/item/device/flash)) if(O:shots < 5) O:shots += 1 - if(istype(O,/obj/item/weapon/gun/energy/taser_gun)) - if(O:charges < 4) - O:charges += 1 + if(istype(O,/obj/item/weapon/gun/energy/taser/cyborg)) + if(O:power_supply.charge < O:power_supply.maxcharge) + O:power_supply.give(100) if(istype(O,/obj/item/weapon/baton)) if(O:charges < 10) O:charges += 1 diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index 4e5881c4ce..d862a25ae2 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -529,7 +529,7 @@ if ((istype(mover, /obj/item/weapon/dummy) || istype(mover, /obj/beam))) return prob(20) else - if (istype(mover, /obj/bullet)) + if (istype(mover, /obj/item/projectile)) return prob(10) else return !src.density diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm index db59adb532..c668d887a8 100644 --- a/code/game/machinery/turrets.dm +++ b/code/game/machinery/turrets.dm @@ -188,12 +188,12 @@ var/turf/U = get_turf(target) if (!istype(T) || !istype(U)) return - var/obj/beam/a_laser/A + var/obj/item/projectile/A if (src.lasers) - A = new /obj/beam/a_laser( loc ) + A = new /obj/item/projectile/beam( loc ) use_power(500) else - A = new /obj/bullet/electrode( loc ) + A = new /obj/item/projectile/electrode( loc ) use_power(200) A.current = T A.yo = U.y - T.y @@ -559,7 +559,7 @@ if (targloc == curloc) continue playsound(src, 'Gunshot.ogg', 50, 1) - var/obj/bullet/A = new /obj/bullet(curloc) + var/obj/item/projectile/A = new /obj/item/projectile(curloc) src.projectiles-- A.current = curloc A.yo = targloc.y - curloc.y diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index c102319f38..f91bfbd05a 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -26,7 +26,7 @@ return set_ready_state(0) playsound(chassis, 'Laser.ogg', 50, 1) - var/obj/beam/a_laser/A = new /obj/beam/a_laser(curloc) + var/obj/item/projectile/beam/A = new /obj/item/projectile/beam(curloc) A.current = curloc A.yo = targloc.y - curloc.y A.xo = targloc.x - curloc.x @@ -55,7 +55,7 @@ return playsound(chassis, 'marauder.ogg', 50, 1) - var/obj/beam/a_laser/A = new /obj/beam/a_laser/pulse_laser/heavy_pulse(curloc) + var/obj/item/projectile/beam/pulse/A = new /obj/item/projectile/beam/pulse/heavy(curloc) A.current = curloc A.yo = targloc.y - curloc.y A.xo = targloc.x - curloc.x @@ -67,14 +67,16 @@ return -/obj/beam/a_laser/pulse_laser/heavy_pulse +/obj/item/projectile/beam/pulse/heavy name = "heavy pulse laser" icon_state = "pulse1_bl" - life = 20 + var/life = 20 Bump(atom/A) A.bullet_act(PROJECTILE_PULSE, src, def_zone) src.life -= 10 + if(life <= 0) + del(src) return /obj/item/mecha_parts/mecha_equipment/weapon/taser @@ -94,7 +96,7 @@ return playsound(chassis, 'Laser.ogg', 50, 1) - var/obj/bullet/electrode/A = new /obj/bullet/electrode(curloc) + var/obj/item/projectile/electrode/A = new /obj/item/projectile/electrode(curloc) A.current = curloc A.yo = targloc.y - curloc.y A.xo = targloc.x - curloc.x @@ -217,7 +219,7 @@ if(!targloc || targloc == curloc) break playsound(chassis, 'Gunshot.ogg', 80, 1) - var/obj/bullet/A = new /obj/bullet(curloc) + var/obj/item/projectile/A = new /obj/item/projectile(curloc) src.projectiles-- A.current = curloc A.yo = targloc.y - curloc.y @@ -255,7 +257,7 @@ if (targloc == curloc) continue playsound(chassis, 'Gunshot.ogg', 50, 1) - var/obj/bullet/weakbullet/A = new /obj/bullet/weakbullet(curloc) + var/obj/item/projectile/weakbullet/A = new /obj/item/projectile/weakbullet(curloc) src.projectiles-- A.current = curloc A.yo = targloc.y - curloc.y diff --git a/code/game/objects/closets/nuclear.dm b/code/game/objects/closets/nuclear.dm index edfcfc8217..2f82faf1c7 100644 --- a/code/game/objects/closets/nuclear.dm +++ b/code/game/objects/closets/nuclear.dm @@ -1,14 +1,14 @@ /obj/closet/syndicate/nuclear/New() ..() sleep(2) - new /obj/item/weapon/ammo/a357( src ) - new /obj/item/weapon/ammo/a357( src ) - new /obj/item/weapon/ammo/a357( src ) + new /obj/item/ammo_magazine( src ) + new /obj/item/ammo_magazine( src ) + new /obj/item/ammo_magazine( src ) new /obj/item/weapon/storage/handcuff_kit( src ) new /obj/item/weapon/storage/flashbang_kit( src ) - new /obj/item/weapon/gun/energy/general( src ) - new /obj/item/weapon/gun/energy/general( src ) - new /obj/item/weapon/gun/energy/general( src ) + new /obj/item/weapon/gun/energy( src ) + new /obj/item/weapon/gun/energy( src ) + new /obj/item/weapon/gun/energy( src ) new /obj/item/weapon/pinpointer( src ) new /obj/item/weapon/pinpointer( src ) new /obj/item/weapon/pinpointer( src ) diff --git a/code/game/objects/closets/secure/captain.dm b/code/game/objects/closets/secure/captain.dm index 160789c983..bb705db7d7 100644 --- a/code/game/objects/closets/secure/captain.dm +++ b/code/game/objects/closets/secure/captain.dm @@ -3,7 +3,7 @@ sleep(2) new /obj/item/weapon/reagent_containers/food/drinks/flask(src) new /obj/item/device/radio/headset/heads/captain( src ) - new /obj/item/weapon/gun/energy/general( src ) + new /obj/item/weapon/gun/energy( src ) new /obj/item/weapon/storage/id_kit( src ) new /obj/item/clothing/under/rank/captain( src ) new /obj/item/clothing/shoes/brown( src ) diff --git a/code/game/objects/closets/secure/security.dm b/code/game/objects/closets/secure/security.dm index b0e41e69d3..b9e44f5155 100644 --- a/code/game/objects/closets/secure/security.dm +++ b/code/game/objects/closets/secure/security.dm @@ -6,7 +6,7 @@ new /obj/item/device/radio/headset/headset_sec(src) new /obj/item/weapon/flashbang(src) new /obj/item/weapon/handcuffs(src) - new /obj/item/weapon/gun/energy/taser_gun(src) + new /obj/item/weapon/gun/energy/taser(src) new /obj/item/device/flash(src) new /obj/item/clothing/under/color/red(src) new /obj/item/clothing/shoes/brown(src) @@ -46,7 +46,7 @@ ..() sleep(2) new /obj/item/device/radio/headset/heads/hop( src ) - new /obj/item/weapon/gun/energy/general( src ) + new /obj/item/weapon/gun/energy( src ) new /obj/item/device/flash( src ) new /obj/item/weapon/storage/id_kit( src ) new /obj/item/clothing/under/rank/head_of_personnel( src ) @@ -61,7 +61,7 @@ sleep(2) new /obj/item/device/radio/headset/heads/hos(src) new /obj/item/weapon/shield/riot(src) - new /obj/item/weapon/gun/energy/general( src ) + new /obj/item/weapon/gun/energy( src ) new /obj/item/device/flash( src ) new /obj/item/weapon/storage/id_kit( src ) new /obj/item/clothing/under/rank/head_of_security( src ) diff --git a/code/game/objects/closets/thunderdome.dm b/code/game/objects/closets/thunderdome.dm index 8631cf60bc..fb0dccca6f 100644 --- a/code/game/objects/closets/thunderdome.dm +++ b/code/game/objects/closets/thunderdome.dm @@ -11,9 +11,9 @@ new /obj/item/weapon/sword(src) new /obj/item/weapon/sword(src) new /obj/item/weapon/sword(src) - new /obj/item/weapon/gun/energy/laser_gun(src) - new /obj/item/weapon/gun/energy/laser_gun(src) - new /obj/item/weapon/gun/energy/laser_gun(src) + new /obj/item/weapon/gun/energy/laser(src) + new /obj/item/weapon/gun/energy/laser(src) + new /obj/item/weapon/gun/energy/laser(src) new /obj/item/weapon/baton(src) new /obj/item/weapon/baton(src) new /obj/item/weapon/baton(src) @@ -33,9 +33,9 @@ new /obj/item/weapon/sword(src) new /obj/item/weapon/sword(src) new /obj/item/weapon/sword(src) - new /obj/item/weapon/gun/energy/laser_gun(src) - new /obj/item/weapon/gun/energy/laser_gun(src) - new /obj/item/weapon/gun/energy/laser_gun(src) + new /obj/item/weapon/gun/energy/laser(src) + new /obj/item/weapon/gun/energy/laser(src) + new /obj/item/weapon/gun/energy/laser(src) new /obj/item/weapon/baton(src) new /obj/item/weapon/baton(src) new /obj/item/weapon/baton(src) diff --git a/code/game/objects/death_commando_gear.dm b/code/game/objects/death_commando_gear.dm deleted file mode 100644 index abc68602e4..0000000000 --- a/code/game/objects/death_commando_gear.dm +++ /dev/null @@ -1,9 +0,0 @@ -/obj/beam/a_laser/pulse_laser - name = "pulse laser" - icon_state = "u_laser" - - Bump(atom/A) - spawn() - if(A) - A.bullet_act(PROJECTILE_PULSE, src, def_zone) - del(src) \ No newline at end of file diff --git a/code/game/objects/devices/PDA/uplink.dm b/code/game/objects/devices/PDA/uplink.dm index aa3bb688fc..6349418e35 100644 --- a/code/game/objects/devices/PDA/uplink.dm +++ b/code/game/objects/devices/PDA/uplink.dm @@ -83,12 +83,11 @@ if("revolver") if (src.uses >= 6) src.uses -= 6 - var/obj/item/weapon/gun/revolver/O = new /obj/item/weapon/gun/revolver(get_turf(src.hostpda)) - O.bullets = 7 + new /obj/item/weapon/gun/projectile(get_turf(src.hostpda)) if("revolver_ammo") if (src.uses >= 2) src.uses -= 2 - new /obj/item/weapon/ammo/a357(get_turf(src.hostpda)) + new /obj/item/ammo_magazine(get_turf(src.hostpda)) if("xbow") if (src.uses >= 5) src.uses -= 5 diff --git a/code/game/objects/displaycase.dm b/code/game/objects/displaycase.dm index 3dfabfc378..4a04e0921c 100644 --- a/code/game/objects/displaycase.dm +++ b/code/game/objects/displaycase.dm @@ -3,7 +3,7 @@ if (1) new /obj/item/weapon/shard( src.loc ) if (occupied) - new /obj/item/weapon/gun/energy/laser_gun/captain( src.loc ) + new /obj/item/weapon/gun/energy/laser/captain( src.loc ) occupied = 0 del(src) if (2) @@ -35,14 +35,14 @@ if (prob(75)) new /obj/item/weapon/shard( src.loc ) if (occupied) - new /obj/item/weapon/gun/energy/laser_gun/captain( src.loc ) + new /obj/item/weapon/gun/energy/laser/captain( src.loc ) occupied = 0 del(src) /obj/displaycase/meteorhit(obj/O as obj) new /obj/item/weapon/shard( src.loc ) - new /obj/item/weapon/gun/energy/laser_gun/captain( src.loc ) + new /obj/item/weapon/gun/energy/laser/captain( src.loc ) del(src) @@ -77,7 +77,7 @@ /obj/displaycase/attack_hand(mob/user as mob) if (src.destroyed && src.occupied) - new /obj/item/weapon/gun/energy/laser_gun/captain( src.loc ) + new /obj/item/weapon/gun/energy/laser/captain( src.loc ) user << "\b You deactivate the hover field built into the case." src.occupied = 0 src.add_fingerprint(user) diff --git a/code/game/objects/grille.dm b/code/game/objects/grille.dm index e8827219ef..78d77e49fe 100644 --- a/code/game/objects/grille.dm +++ b/code/game/objects/grille.dm @@ -79,7 +79,7 @@ if ((istype(mover, /obj/effects) || istype(mover, /obj/item/weapon/dummy) || istype(mover, /obj/beam) || istype(mover, /obj/meteor/small))) return 1 else - if (istype(mover, /obj/bullet)) + if (istype(mover, /obj/item/projectile)) return prob(30) else return !src.density diff --git a/code/game/objects/items/weapons/guns_ammo.dm b/code/game/objects/items/weapons/guns_ammo.dm deleted file mode 100644 index 87bd238437..0000000000 --- a/code/game/objects/items/weapons/guns_ammo.dm +++ /dev/null @@ -1,1722 +0,0 @@ -/* -CONTAINS: -PROJECTILE DEFINES -PULSE RIFLE -357 AMMO -38 AMMO -SHOTGUN SHELLS -SHOTGUN -REVOLVER -DETECTIVES REVOLVER -LASER GUN -TASER GUN -CROSSBOW -ALIEN SPIT -TELEPORT GUN - -*/ - -/var/const/PROJECTILE_TASER = 1 -/var/const/PROJECTILE_LASER = 2 -/var/const/PROJECTILE_BULLET = 3 -/var/const/PROJECTILE_PULSE = 4 -/var/const/PROJECTILE_BOLT = 5 -/var/const/PROJECTILE_WEAKBULLET = 6 -/var/const/PROJECTILE_TELEGUN = 7 -/var/const/PROJECTILE_DART = 8 - - -// PULSE RIFLE - -/obj/item/weapon/gun/energy/pulse_rifle - name = "pulse rifle" - desc = "A heavy-duty, pulse-based energy weapon preferred by front-line combat personnel." - icon_state = "pulse" - force = 15 - - var/mode = 1//I guess I'll leave this here in case another mode to the weapon is added./N - - afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag) - if ((user.mutations & CLOWN) && prob(50)) - user << "\red The pulse rifle blows up in your face." - user.take_organ_damage(0,20) - user.drop_item() - del(src) - return - if (flag) - return - if ((!istype(user, /mob/living/carbon/human)) && ticker.mode != "monkey") - user << "\red You don't have the dexterity to do this!" - return - - src.add_fingerprint(user) - - var/turf/curloc = user.loc - var/atom/targloc = get_turf(target) - if (!targloc || !istype(targloc, /turf) || !curloc) - return - if (targloc == curloc) - user.bullet_act(PROJECTILE_PULSE, src, user.get_organ_target()) - return - - var/obj/beam/a_laser/A = new /obj/beam/a_laser/pulse_laser(user.loc) - playsound(user, 'pulse.ogg', 50, 1) - A.def_zone = user.get_organ_target() - A.current = curloc - A.yo = targloc.y - curloc.y - A.xo = targloc.x - curloc.x - user.next_move = world.time + 4 - spawn() - A.process() - return - -/obj/item/weapon/gun/energy/pulse_rifle/attack(mob/M as mob, mob/living/user as mob) - ..() - /* - src.add_fingerprint(user) - var/mob/living/carbon/human/H = M - - if ((istype(H, /mob/living/carbon/human) && istype(H, /obj/item/clothing/head) && H.flags & 8 && prob(80))) - M << "\blue The helmet protects you from being hit hard in the head!" - for(var/mob/O in viewers(M, null)) - if(O.client) - O.show_message(text("\red [] blocked a hit from []!", M, user), 1) - return - else - var/time = rand(20, 60) - if (prob(90)) - M.paralysis = max(time, M.paralysis) - else - M.weakened = max(time, M.weakened) - src.force = 35 - ..() - if(M.stat != 2) M.stat = 1 - for(var/mob/O in viewers(M, null)) - if(O.client) - O.show_message(text("\red [] has been rifle butted by []!", M, user), 1, "\red You hear someone fall.", 2) - return - */ -// AMMO - - -/obj/item/weapon/ammo/update_icon() - return - - -// 357 - -/obj/item/weapon/ammo/a357/update_icon() - src.icon_state = text("357-[]", src.amount_left) - src.desc = text("There are [] bullet\s left!", src.amount_left) - return - - -// 38 - -/obj/item/weapon/ammo/a38/update_icon() - src.desc = text("There are [] bullet\s left!", src.amount_left) - if(src.amount_left > 0) - src.icon_state = text("38-[]", src.amount_left) - else - src.icon_state = "speedloader_empty" - - - -// REVOLVER - -/obj/item/weapon/gun/revolver/examine() - set src in usr - - src.desc = text("There are [] bullet\s left! Uses 357.", src.bullets) - ..() - return - -obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/living/user as mob) - ..() - - if (istype(A, /obj/item/weapon/ammo/a357)) - if (src.bullets >= 7) - user << "\blue It's already fully loaded!" - return 1 - if (A.amount_left <= 0) - user << "\red There is no more bullets!" - return 1 - if (A.amount_left < (7 - src.bullets)) - src.bullets += A.amount_left - user << text("\red You reload [] bullet\s!", A.amount_left) - A.amount_left = 0 - else - user << text("\red You reload [] bullet\s!", 7 - src.bullets) - A.amount_left -= 7 - src.bullets - src.bullets = 7 - A.update_icon() - return 1 - return - -/obj/item/weapon/gun/revolver/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag) - if (flag) - return - if ((istype(user, /mob/living/carbon/monkey)) && ticker.mode != "monkey") - usr << "\red You don't have the dexterity to do this!" - return - src.add_fingerprint(user) - if (src.bullets < 1) - user.show_message("\red *click* *click*", 2) - return - playsound(user, 'Gunshot.ogg', 100, 1) - src.bullets-- - for(var/mob/O in viewers(user, null)) - O.show_message(text("\red [] fires a revolver at []!", user, target), 1, "\red You hear a gunshot", 2) - var/turf/T = user.loc - var/turf/U = (istype(target, /atom/movable) ? target.loc : target) - if ((!( U ) || !( T ))) - return - while(!( istype(U, /turf) )) - U = U.loc - if (!( istype(T, /turf) )) - return - if (U == T) - user.bullet_act(PROJECTILE_BULLET, src, user.get_organ_target()) - return - var/obj/bullet/A = new /obj/bullet( user.loc ) - if (!istype(U, /turf)) - del(A) - return - A.def_zone = user.get_organ_target() - A.current = U - A.yo = U.y - T.y - A.xo = U.x - T.x - user.next_move = world.time + 4 - spawn( 0 ) - A.process() - return - return - -/obj/item/weapon/gun/revolver/attack(mob/M as mob, mob/living/user as mob) - if ((user.a_intent == "hurt" && src.bullets > 0)) - playsound(user, 'Gunshot.ogg', 100, 1) - for(var/mob/O in viewers(M, null)) - if(O.client) O.show_message(text("\red [] has been shot point-blank by []!", M, user), 1, "\red You hear a gunshot", 2) - M.attack_log += text("[world.time] - has been shot point blank with [src.name] by [user.name] ([user.ckey])") - user.attack_log += text("[world.time] - has used the [src.name] to shoot [M.name] ([M.ckey]) at point blank range.") - - M.bullet_act(PROJECTILE_BULLET, src, user.get_organ_target()) - src.bullets-- - else - ..() - return - - - - -// SHOTGUN - -/obj/item/weapon/gun/shotgun/examine() - set src in usr - - if(src.name == "shotgun" || src.name == "combat shotgun") - src.desc = text("There are [src.index] shell\s left!") //no need to mention what shells are used, we have only one type of them - - ..() - - return - -//0, not loaded. 1, beanbag, 2, 12gauge, 3, blank, 4, dart. - -/obj/item/weapon/gun/shotgun/attackby(obj/item/weapon/A as obj, mob/living/user as mob) - ..() - if (istype(A, /obj/item/weapon/ammo/shell/beanbag)) - if (index == src.shellsmax || shellsunlimited >= 1) //...than sorry. - user << "\blue It's already fully loaded!" - return 1 - else - user << "\blue You load the shell into the shotgun." - index++ - src.shells.len = index - del(A) - src.shells[index] = 1 - return 1 - return 1 - - else if (istype(A, /obj/item/weapon/ammo/shell/gauge)) - if (index == src.shellsmax || shellsunlimited >= 1) - user << "\blue It's already fully loaded!" - return 1 - else - user << "\blue You load the shell into the shotgun." - index++ - src.shells.len = index - del(A) - src.shells[index] = 2 - return 1 - return 1 - - else if (istype(A, /obj/item/weapon/ammo/shell/blank)) - if (index == src.shellsmax || shellsunlimited >= 1) - user << "\blue It's already fully loaded!" - return 1 - else - user << "\blue You load the shell into the shotgun." - index++ - src.shells.len = index - del(A) - src.shells[index] = 3 - return 1 - return 1 - else if (istype(A, /obj/item/weapon/ammo/shell/dart)) - if (index == src.shellsmax || shellsunlimited >= 1) - user << "\blue It's already fully loaded!" - return 1 - else - user << "\blue You load the dart into the shotgun." - index++ - src.shells.len = index - del(A) - src.shells[index] = 4 - return 1 - return 1 - return 1 - -/obj/item/weapon/gun/shotgun/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag) - if (flag) - return - if ((istype(user, /mob/living/carbon/monkey)) && ticker.mode != "monkey") - usr << "\red You don't have the dexterity to do this!" - return - if (src.pumped == 0) - for(var/mob/O in viewers(user, null)) - O.show_message(text("\red [] pumps the [src.name]!", user), 1, "\red You hear pumping", 2) - playsound(user, 'shotgunpump.ogg', 100, 1) - src.pumped = 1 - return - src.add_fingerprint(user) - if (!index && !shellsunlimited) - user.show_message("\red *click* *click*", 2) - return - playsound(user, 'Gunshot.ogg', 100, 1) - if (user.ckey == "barhandar" && src.name == "adjudicator") - src.name = "Barhandar's Boomstick" - for(var/mob/O in viewers(user, null)) - O.show_message(text("\red [] fires the [src.name] at []!", user, target), 1, "\red You hear a gunshot", 2) - var/turf/T = user.loc - var/turf/U = (istype(target, /atom/movable) ? target.loc : target) - if ((!( U ) || !( T ))) - return - while(!( istype(U, /turf) )) - U = U.loc - if (!( istype(T, /turf) )) - return - if (U == T) - if (src.shells[index] == 1 || shellsunlimited == 1) - user.bullet_act(PROJECTILE_WEAKBULLET, src, user.get_organ_target()) - else if (src.shells[index] == 2 || shellsunlimited == 2) - user.bullet_act(PROJECTILE_BULLET, src, user.get_organ_target()) - else if (src.shells[index] == 4 || shellsunlimited == 4) - user.bullet_act(PROJECTILE_BOLT, src, user.get_organ_target()) - return - switch(shellsunlimited) - if (1) - var/obj/bullet/A = new /obj/bullet/weakbullet( user.loc ) - src.pumped = 0 - A.def_zone = user.get_organ_target() - A.current = U - A.yo = U.y - T.y - A.xo = U.x - T.x - user.next_move = world.time + 4 - spawn( 0 ) - A.process() - if (!istype(U, /turf)) - del(A) - return - if (2) - var/obj/bullet/A = new /obj/bullet( user.loc ) - src.pumped = 0 - A.def_zone = user.get_organ_target() - A.current = U - A.yo = U.y - T.y - A.xo = U.x - T.x - user.next_move = world.time + 4 - spawn( 0 ) - A.process() - if (!istype(U, /turf)) - del(A) - return - if (3) //I don't know why the fuck you'll need unlimited blank shells. Just to be sure. -- Barhandar - src.pumped = 0 - spawn( 0 ) - return - if (4) - var/obj/bullet/A = new /obj/bullet/cbbolt( user.loc ) - src.pumped = 0 - A.def_zone = user.get_organ_target() - A.current = U - A.yo = U.y - T.y - A.xo = U.x - T.x - user.next_move = world.time + 4 - spawn( 0 ) - A.process() - if (!istype(U, /turf)) - del(A) - return - else switch(src.shells[index]) - if (1) - var/obj/bullet/A = new /obj/bullet/weakbullet( user.loc ) - src.pumped = 0 - src.shells[index] = 0 - index-- - A.def_zone = user.get_organ_target() - A.current = U - A.yo = U.y - T.y - A.xo = U.x - T.x - user.next_move = world.time + 4 - spawn( 0 ) - A.process() - if (!istype(U, /turf)) - del(A) - return - if (2) - var/obj/bullet/A = new /obj/bullet( user.loc ) - src.pumped = 0 - src.shells[index] = 0 - index-- - A.def_zone = user.get_organ_target() - A.current = U - A.yo = U.y - T.y - A.xo = U.x - T.x - user.next_move = world.time + 4 - spawn( 0 ) - A.process() - if (!istype(U, /turf)) - del(A) - return - if (3) - src.pumped = 0 - src.shells[index] = 0 - index-- - spawn( 0 ) - return - if (4) - var/obj/bullet/A = new /obj/bullet/cbbolt( user.loc ) - src.pumped = 0 - src.shells[index] = 0 - index-- - A.def_zone = user.get_organ_target() - A.current = U - A.yo = U.y - T.y - A.xo = U.x - T.x - user.next_move = world.time + 4 - spawn( 0 ) - A.process() - if (!istype(U, /turf)) - del(A) - return - - - -// DETECTIVE REVOLVER - - -/obj/item/weapon/gun/detectiverevolver/examine() - set src in usr - src.desc = text("There are [] bullet\s left! Uses .38-Special rounds", src.bullets) - ..() - return - -/obj/item/weapon/gun/detectiverevolver/attackby(obj/item/weapon/ammo/a38/A as obj, mob/living/user as mob) - ..() - - if (istype(A, /obj/item/weapon/ammo/a38)) - if (src.bullets >= 7) - user << "\blue It's already fully loaded!" - return 1 - if (A.amount_left <= 0) - user << "\red There is no more bullets!" - return 1 - if (A.amount_left < (7 - src.bullets)) - src.bullets += A.amount_left - user << text("\red You reload [] bullet\s!", A.amount_left) - A.amount_left = 0 - else - user << text("\red You reload [] bullet\s!", 7 - src.bullets) - A.amount_left -= 7 - src.bullets - src.bullets = 7 - A.update_icon() - return 1 - return - -/obj/item/weapon/gun/detectiverevolver/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag) - if (flag) - return - - var/detective = 0 - - if (istype(user, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = user - detective = (istype(H.w_uniform, /obj/item/clothing/under/det) && \ - istype(H.head, /obj/item/clothing/head/det_hat) && \ - istype(H.wear_suit, /obj/item/clothing/suit/det_suit)) - else if (istype(user, /mob/living/carbon/monkey)) - if (ticker.mode != "monkey") - user << "\red You don't have the dexterity to do this!" - return - detective = 1 - - if(!detective) - usr << "\red You just don't feel cool enough to use this gun looking like that." - return - - src.add_fingerprint(user) - if (src.bullets < 1) - user.show_message("\red *click* *click*", 2) - return - playsound(user, 'Gunshot.ogg', 100, 1) - src.bullets-- - for(var/mob/O in viewers(user, null)) - O.show_message(text("\red [] fires the detectives revolver at []!", user, target), 1, "\red You hear a gunshot", 2) - var/turf/T = user.loc - var/turf/U = (istype(target, /atom/movable) ? target.loc : target) - if ((!( U ) || !( T ))) - return - while(!( istype(U, /turf) )) - U = U.loc - if (!( istype(T, /turf) )) - return - if (U == T) - user.bullet_act(PROJECTILE_WEAKBULLET, src, user.get_organ_target()) - return - var/obj/bullet/weakbullet/A = new /obj/bullet/weakbullet( user.loc ) - if (!istype(U, /turf)) - del(A) - return - A.def_zone = user.get_organ_target() - A.current = U - A.yo = U.y - T.y - A.xo = U.x - T.x - user.next_move = world.time + 4 - spawn( 0 ) - A.process() - return - return - -/obj/item/weapon/gun/detectiverevolver/attack(mob/M as mob, mob/living/user as mob) - var/detective = 0 - - if (istype(user, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = user - detective = (istype(H.w_uniform, /obj/item/clothing/under/det) && \ - istype(H.head, /obj/item/clothing/head/det_hat) && \ - istype(H.wear_suit, /obj/item/clothing/suit/det_suit)) - else if (istype(user, /mob/living/carbon/monkey)) - if (ticker.mode != "monkey") - user << "\red You don't have the dexterity to do this!" - return - detective = 1 - - if(!detective) - user << "\red You just don't feel cool enough to use this gun looking like that." - return - src.add_fingerprint(user) - ..() - /* - if ((istype(H, /mob/living/carbon/human) && istype(H, /obj/item/clothing/head) && H.flags & 8 && prob(80))) - M << "\red The helmet protects you from being hit hard in the head!" - return - if ((user.a_intent == "hurt" && src.bullets > 0)) - if (prob(5)) - if (M.paralysis < 10) - M.paralysis = 10 - else - if (M.weakened < 10) - M.weakened = 10 - src.bullets-- - src.force = 9.0 - ..() - src.force = 9.0 - if(M.stat != 2) M.stat = 1 - for(var/mob/O in viewers(M, null)) - if(O.client) O.show_message(text("\red [] has been shot point-blank with the detectives revolver by []!", M, user), 1, "\red You hear someone fall", 2) - else - if (prob(5)) - if (M.paralysis < 10) - M.paralysis = 10 - else - if (M.weakened < 10) - M.weakened = 10 - src.force = 8.0 - ..() - if(M.stat != 2) M.stat = 1 - for(var/mob/O in viewers(M, null)) - if (O.client) O.show_message(text("\red [] has been pistol whipped with the detectives revolver by []!", M, user), 1, "\red You hear someone fall", 2) - return - */ - -// ENERGY GUN - -/obj/item/weapon/gun/energy/update_icon() - if (istype(src, /obj/item/weapon/gun/energy/crossbow)) return - var/ratio = src.charges / 10 - ratio = round(ratio, 0.25) * 100 - src.icon_state = text("gun[]", ratio) - return - -/obj/item/weapon/gun/energy/emp_act(severity) - charges = 0 - update_icon() - ..() - - -// LASER GUN - -/obj/item/weapon/gun/energy/laser_gun/update_icon() - if (istype(src, /obj/item/weapon/gun/energy/crossbow)) return - var/ratio = src.charges / 10 - ratio = round(ratio, 0.25) * 100 - if (istype(src, /obj/item/weapon/gun/energy/laser_gun/captain)) - src.icon_state = text("caplaser[]", ratio) - else - src.icon_state = text("laser[]", ratio) - return - -/obj/item/weapon/gun/energy/laser_gun/captain/New() - charge() - -/obj/item/weapon/gun/energy/laser_gun/captain/proc/charge() - if(charges < maximum_charges) - charges++ - update_icon() - spawn(50) charge() - - -/obj/item/weapon/gun/energy/laser_gun/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag) - if ((user.mutations & CLOWN) && prob(50)) - user << "\red The laser gun blows up in your face." - user.take_organ_damage(0,20) - user.drop_item() - del(src) - return - if (flag) - return - if ((istype(user, /mob/living/carbon/monkey)) && ticker.mode != "monkey") - user << "\red You don't have the dexterity to do this!" - return - - src.add_fingerprint(user) - user.attack_log += text("[world.time] - has fired the [src.name] at [target.name] at ([target.x], [target.y], [target.z])") - if(ismob(target)) - var/mob/TAR = target - TAR.attack_log += text("[world.time] - has been fired at by [src.name] by [user.name] at ([user.ckey])") - - - if(src.charges < 1) - user << "\red *click* *click*" - return - - if(next_attack > world.time) - return - - playsound(user, 'Laser.ogg', 50, 1) - if(isrobot(user)) - var/mob/living/silicon/robot/R = user - R.cell.charge -= 30 - else - src.charges-- - if(shot_delay) - next_attack = world.time + shot_delay - update_icon() - - var/turf/T = user.loc - var/turf/U = (istype(target, /atom/movable) ? target.loc : target) - - if(!U || !T) - return - while(U && !istype(U, /turf)) - U = U.loc - if(!istype(T, /turf)) - return - if(U == T) - user.bullet_act(PROJECTILE_LASER, src, user.get_organ_target()) - return - if(!istype(U, /turf)) - return - - var/obj/beam/a_laser/A = new /obj/beam/a_laser( user.loc ) - A.def_zone = user.get_organ_target() - - A.current = U - A.yo = U.y - T.y - A.xo = U.x - T.x - - user.next_move = world.time + 4 - A.process() - return - -/obj/item/weapon/gun/energy/laser_gun/attack(mob/M as mob, mob/living/user as mob) - ..() - /* - src.add_fingerprint(user) - if ((prob(30) && M.stat < 2)) - var/mob/living/carbon/human/H = M - -// ******* Check - if ((istype(H, /mob/living/carbon/human) && istype(H, /obj/item/clothing/head) && H.flags & 8 && prob(80))) - M << "\red The helmet protects you from being hit hard in the head!" - return - var/time = rand(10, 120) - if (prob(90)) - if (M.paralysis < time) - M.paralysis = time - else - if (M.weakened < time) - M.weakened = time - if(M.stat != 2) M.stat = 1 - for(var/mob/O in viewers(M, null)) - if(O.client) O.show_message(text("\red [] has been knocked unconscious!", M), 1, "\red You hear someone fall", 2) - - return - */ - -// TASER GUN - - -/obj/item/weapon/gun/energy/taser_gun/update_icon() - var/ratio = src.charges / maximum_charges - ratio = round(ratio, 0.25) * 100 - src.icon_state = text("taser[]", ratio) - -/obj/item/weapon/gun/energy/taser_gun/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag) - if(flag) - return - if ((istype(user, /mob/living/carbon/monkey)) && ticker.mode != "monkey") - user << "\red You don't have the dexterity to do this!" - return - - user.attack_log += text("[world.time] - has fired the [src.name] at [target.name] at ([target.x], [target.y], [target.z])") - if(ismob(target)) - var/mob/TAR = target - TAR.attack_log += text("[world.time] - has been fired at by [src.name] by [user.name] at ([user.ckey])") - - src.add_fingerprint(user) - if(!isrobot(user) && src.charges < 1) - user << "\red *click* *click*"; - return - - playsound(user, 'Taser.ogg', 50, 1) - if(isrobot(user)) - var/mob/living/silicon/robot/R = user - R.cell.charge -= 20 - else - src.charges-- - update_icon() - - var/turf/T = user.loc - var/turf/U = (istype(target, /atom/movable) ? target.loc : target) - - if(!U || !T) - return - while(U && !istype(U,/turf)) - U = U.loc - if(!istype(T, /turf)) - return - if (U == T) - user.bullet_act(PROJECTILE_TASER, src, user.get_organ_target()) - return - if(!istype(U, /turf)) - return - - var/obj/bullet/electrode/A = new /obj/bullet/electrode(user.loc) - A.def_zone = user.get_organ_target() - A.current = U - A.yo = U.y - T.y - A.xo = U.x - T.x - - A.process() - - -/obj/item/weapon/gun/energy/taser_gun/attack(mob/M as mob, mob/living/user as mob) - if ((usr.mutations & CLOWN) && prob(50)) - usr << "\red The taser gun discharges in your hand." - usr.paralysis += 60 - return - src.add_fingerprint(user) - M.attack_log += text("[world.time] - has been ahot at with a [src.name] by [user.name] ([user.ckey])") - user.attack_log += text("[world.time] - has shot witha [src.name] at [M.name] ([M.ckey])") - - var/mob/living/carbon/human/H = M - if ((istype(H, /mob/living/carbon/human) && istype(H, /obj/item/clothing/head) && H.flags & 8 && prob(80))) - M << "\red The helmet protects you from being hit hard in the head!" - return - if((src.charges >= 1) && (istype(H, /mob/living/carbon/human))) - if (user.a_intent == "hurt") - if (!..()) return - if (prob(20)) - if (M.paralysis < 10 && (!(M.mutations & HULK)) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/) - M.paralysis = 10 - else if (M.weakened < 10 && (!(M.mutations & HULK)) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/) - M.weakened = 10 - if (M.stuttering < 10 && (!(M.mutations & HULK)) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/) - M.stuttering = 10 - - if(M.stat != 2) M.stat = 1 - for(var/mob/O in viewers(M, null)) - O.show_message("\red [M] has been knocked unconscious!", 1, "\red You hear someone fall", 2) - else - if (prob(50)) - if (M.paralysis < 60 && (!(M.mutations & HULK)) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/) - M.paralysis = 60 - else - if (M.weakened < 60 && (!(M.mutations & HULK)) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/) - M.weakened = 60 - if (M.stuttering < 60 && (!(M.mutations & HULK)) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/) - M.stuttering = 60 - if(M.stat != 2) M.stat = 1 - for(var/mob/O in viewers(M, null)) - if (O.client) O.show_message("\red [M] has been stunned with the taser gun by [user]!", 1, "\red You hear someone fall", 2) - if(isrobot(user)) - var/mob/living/silicon/robot/R = user - R.cell.charge -= 20 - else - src.charges-- - update_icon() - else if((src.charges >= 1) && (istype(M, /mob/living/carbon/monkey))) - if (user.a_intent == "hurt") - if (!..()) return - if (prob(20)) - if (M.paralysis < 10 && (!(M.mutations & HULK)) ) - M.paralysis = 10 - else if (M.weakened < 10 && (!(M.mutations & HULK)) ) - M.weakened = 10 - if (M.stuttering < 10 && (!(M.mutations & HULK)) ) - M.stuttering = 10 - if(M.stat != 2) M.stat = 1 - for(var/mob/O in viewers(M, null)) - O.show_message("\red [M] has been knocked unconscious!", 1, "\red You hear someone fall", 2) - else - if (prob(50)) - if (M.paralysis < 60 && (!(M.mutations & HULK)) ) - M.paralysis = 60 - else - if (M.weakened < 60 && (!(M.mutations & HULK)) ) - M.weakened = 60 - if (M.stuttering < 60 && (!(M.mutations & HULK)) ) - M.stuttering = 60 - if(M.stat != 2) M.stat = 1 - for(var/mob/O in viewers(M, null)) - if (O.client) O.show_message("\red [M] has been stunned with the taser gun by [user]!", 1, "\red You hear someone fall", 2) - if(isrobot(user)) - var/mob/living/silicon/robot/R = user - R.cell.charge -= 20 - else - src.charges-- - update_icon() - else // no charges in the gun, so they just wallop the target with it - ..() - - - - -// CROSSBOW - - -/obj/item/weapon/gun/energy/crossbow/New() - charge() - -/obj/item/weapon/gun/energy/crossbow/proc/charge() - if(charges < maximum_charges) charges++ - spawn(50) charge() - -/obj/item/weapon/gun/energy/crossbow/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag) - if(flag) - return - if ((istype(user, /mob/living/carbon/monkey)) && ticker.mode != "monkey") - usr << "\red You don't have the dexterity to do this!" - return - - //src.add_fingerprint(user) stealthy and stuff - - if(src.charges < 1) - user << "\red *click* *click*"; - return - - playsound(user, 'Genhit.ogg', 20, 1) - src.charges-- - var/turf/T = user.loc - var/turf/U = (istype(target, /atom/movable) ? target.loc : target) - - if(!U || !T) - return - while(U && !istype(U,/turf)) - U = U.loc - if(!istype(T, /turf)) - return - if (U == T) - user.bullet_act(PROJECTILE_BOLT, src, user.get_organ_target()) - return - if(!istype(U, /turf)) - return - - var/obj/bullet/cbbolt/A = new /obj/bullet/cbbolt(user.loc) - A.def_zone = user.get_organ_target() - A.current = U - A.yo = U.y - T.y - A.xo = U.x - T.x - - A.process() - - -// TELEPORT GUN -// This whole thing is just a copy/paste job - -/obj/item/weapon/gun/energy/teleport_gun/attack_self(mob/living/user as mob) - var/list/L = list( ) - for(var/obj/machinery/teleport/hub/R in world) - var/obj/machinery/computer/teleporter/com = locate(/obj/machinery/computer/teleporter, locate(R.x - 2, R.y, R.z)) - if (istype(com, /obj/machinery/computer/teleporter) && com.locked) - if(R.icon_state == "tele1") - L["[com.id] (Active)"] = com.locked - else - L["[com.id] (Inactive)"] = com.locked - L["None (Dangerous)"] = null - var/t1 = input(user, "Please select a teleporter to lock in on.", "Hand Teleporter") in L - if ((user.equipped() != src || user.stat || user.restrained())) - return - var/T = L[t1] - src.target = T - usr << "\blue Teleportation hub selected!" - src.add_fingerprint(user) - return - -/obj/item/weapon/gun/energy/teleport_gun/update_icon() - var/ratio = src.charges / maximum_charges - ratio = round(ratio, 0.25) * 100 - src.icon_state = text("taser[]", ratio) - -/obj/item/weapon/gun/energy/teleport_gun/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag) - if(flag) - return - if ((istype(user, /mob/living/carbon/monkey)) && ticker.mode != "monkey") - usr << "\red You don't have the dexterity to do this!" - return - src.add_fingerprint(user) - if(src.charges < 1) - user << "\red *click* *click*"; - return - - playsound(user, 'Taser.ogg', 50, 1) - src.charges-- - update_icon() - - var/turf/T = user.loc - var/turf/U = (istype(target, /atom/movable) ? target.loc : target) - - if(!U || !T) - return - while(U && !istype(U,/turf)) - U = U.loc - if(!istype(T, /turf)) - return - if (U == T) - return - if(!istype(U, /turf)) - return - - var/obj/bullet/teleshot/A = new /obj/bullet/teleshot(user.loc) - A.def_zone = user.get_organ_target() - - A.target = src.target - A.current = U - A.yo = U.y - T.y - A.xo = U.x - T.x - - A.process() - -/obj/item/weapon/gun/energy/teleport_gun/proc/point_blank_teleport(mob/M as mob, mob/living/user as mob) - if (src.target == null) - var/list/turfs = list( ) - for(var/turf/T in orange(10)) - if(T.x>world.maxx-4 || T.x<4) continue //putting them at the edge is dumb - if(T.y>world.maxy-4 || T.y<4) continue - turfs += T - if(turfs) - src.target = pick(turfs) - if (!src.target) - return - spawn(0) - if(M) - var/datum/effects/system/spark_spread/s = new /datum/effects/system/spark_spread - s.set_up(5, 1, M) - s.start() - if(prob(src.failchance)) //oh dear a problem, put em in deep space - do_teleport(M, locate(rand(5, world.maxx - 5), rand(5, world.maxy -5), 3), 0) - else - do_teleport(M, src.target, 2) - return - -/obj/item/weapon/gun/energy/teleport_gun/attack(mob/M as mob, mob/living/user as mob) - if ((usr.mutations & CLOWN) && prob(50)) - usr << "\red You shoot the teleport gun while holding it backwards." - point_blank_teleport(usr) - return - src.add_fingerprint(user) - M.attack_log += text("[world.time] - has been shot at with [src.name] by [user.name] ([user.ckey])") - user.attack_log += text("[world.time] - has shot with [src.name] at [M.name] ([M.ckey])") - - if(src.charges >= 1) - if (prob(95)) - point_blank_teleport(M) - for(var/mob/O in viewers(M, null)) - if (O.client) O.show_message("\red [M] was shot point blank with the teleport gun by [user]!", 1) - else - point_blank_teleport(usr) - for(var/mob/O in viewers(M, null)) - if (O.client) O.show_message("\red [user] tried to shoot [M] but the teleport gun misfired!", 1) - src.charges-- - update_icon() - else // no charges in the gun, so they just wallop the target with it - ..() - - - - - - - - -// General Gun - -/obj/item/weapon/gun/energy/general - name = "energy gun" - icon_state = "energy" - desc = "Its a gun that has two modes, stun and kill" - w_class = 3.0 - item_state = "gun" - force = 10.0 - throw_speed = 2 - throw_range = 10 - charges = 10 - maximum_charges = 10 - m_amt = 2000 - g_amt = 1000 - - var/mode = 2 - - New() - ..() - overlays += "energystun" - - nuclear - name = "Advanced Energy Gun" - desc = "An energy gun with an experimental miniaturized reactor." - origin_tech = "combat=3;materials=5;powerstorage=3" - var/lightfail = 0 - icon_state = "nucgun" - - New() - ..() - charge() - - proc/charge() - if(charges < maximum_charges) - if(failcheck()) - charges++ //If the gun isn't fully charged, and it doesn't suffer a failure, add a charge. - update_icon() - if(!crit_fail) - spawn(50) charge() - - proc/failcheck() - lightfail = 0 - if (prob(src.reliability)) return 1 //No failure - if (prob(src.reliability)) - for (var/mob/M in range(0,src)) //Only a minor failure, enjoy your radiation if you're in the same tile or carrying it - if (src in M.contents) - M << "\red Your gun feels pleasantly warm for a moment." - else - M << "\red You feel a warm sensation." - src.loc:radiation += rand(1,40) - lightfail = 1 - else - for (var/mob/M in range(rand(1,4),src)) //Big failure, TIME FOR RADIATION BITCHES - if (src in M.contents) - M << "\red Your gun's reactor overloads!" - M << "\red You feel a wave of heat wash over you." - M.radiation += 100 - crit_fail = 1 //break the gun so it stops recharging - update_icon() - - update_icon() - overlays = null - update_charge() - update_reactor() - update_mode() - - proc/update_charge() - if (crit_fail) - overlays += "nucgun-whee" - return - var/ratio = src.charges / maximum_charges - ratio = round(ratio, 0.25) * 100 - overlays += text("nucgun-[]", ratio) - - proc/update_reactor() - if(crit_fail) - overlays += "nucgun-crit" - return - if(lightfail) - overlays += "nucgun-medium" - else if ((charges/maximum_charges) <= 0.5) - overlays += "nucgun-light" - else - overlays += "nucgun-clean" - - proc/update_mode() - if (mode == 2) - overlays += "nucgun-stun" - else if (mode == 1) - overlays += "nucgun-kill" - - attack_self(mob/living/user as mob) - if(mode == 1) - mode = 2 - user << "\blue You set the gun to stun" - - else if (mode == 2) - mode = 1 - user << "\blue You set the gun to kill" - update_icon() - - update_icon() - var/ratio = charges / maximum_charges - ratio = round(ratio, 0.25) * 100 - src.icon_state = text("energy[]", ratio) - - afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag) - if ((user.mutations & CLOWN) && prob(50)) - user << "\red The energy gun blows up in your face." - user.take_organ_damage(0,20) - user.drop_item() - del(src) - return - if (flag) - return - if ((istype(user, /mob/living/carbon/monkey)) && ticker.mode != "monkey") - user << "\red You don't have the dexterity to do this!" - return - - src.add_fingerprint(user) - user.attack_log += text("[world.time] - has fired the [src.name] at [target.name] at ([target.x], [target.y], [target.z])") - if(ismob(target)) - var/mob/TAR = target - TAR.attack_log += text("[world.time] - has been fired at by [src.name] by [user.name] ([user.ckey])") - - if(src.charges < 1) - user << "\red *click* *click*"; - return - - playsound(user, 'laser3.ogg', 50, 1) - src.charges-- - update_icon() - - var/turf/curloc = user.loc - var/atom/targloc = get_turf(target) - if (!targloc || !istype(targloc, /turf) || !curloc) - return - - if(mode == 1) - if (targloc == curloc) - user.bullet_act(PROJECTILE_LASER, src, user.get_organ_target()) - return - else if(mode == 2) - if (targloc == curloc) - user.bullet_act(PROJECTILE_TASER, src, user.get_organ_target()) - return - - if(mode == 1) - var/obj/beam/a_laser/A = new /obj/beam/a_laser(user.loc) - A.def_zone = user.get_organ_target() - A.current = curloc - A.yo = targloc.y - curloc.y - A.xo = targloc.x - curloc.x - user.next_move = world.time + 4 - spawn() - A.process() - - else if(mode == 2) - var/obj/bullet/electrode/A = new /obj/bullet/electrode(user.loc) - A.def_zone = user.get_organ_target() - A.current = curloc - A.yo = targloc.y - curloc.y - A.xo = targloc.x - curloc.x - user.next_move = world.time + 4 - spawn() - A.process() - - attack_self(mob/living/user as mob) - if(mode == 1) - mode = 2 - user << "\blue You set the gun to stun" - overlays += "energystun" - overlays -= "energykill" - else if (mode == 2) - mode = 1 - user << "\blue You set the gun to kill" - overlays += "energykill" - overlays -= "energystun" - update_icon() - - attack(mob/M as mob, mob/living/user as mob) - ..() - /* - src.add_fingerprint(user) - if ((prob(30) && M.stat < 2)) - var/mob/living/carbon/human/H = M - - if ((istype(H, /mob/living/carbon/human) && istype(H, /obj/item/clothing/head) && H.flags & 8 && prob(80))) - M << "\red The helmet protects you from being hit hard in the head!" - return - var/time = rand(10, 120) - if (prob(90)) - if (M.paralysis < time) - M.paralysis = time - else - if (M.weakened < time) - M.weakened = time - if(M.stat != 2) M.stat = 1 - for(var/mob/O in viewers(M, null)) - if(O.client) O.show_message(text("\red [M] has been knocked unconscious!"), 1, "\red You hear someone fall", 2) - - return - */ - - - -//Mauser C96 - -/obj/item/weapon/gun/c96/examine() - set src in usr - if (src.magazine) - if (istype(src.magazine, /obj/item/weapon/ammo/a763m)) - src.desc = text("There are [] round\s left! Uses 7.63x25 Mauser", src.magazine.amount_left) - else - src.desc = text("There are 0 rounds left! Uses 7.63x25 Mauser") - ..() - return - -/obj/item/weapon/gun/c96/verb/eject() - set name = "Eject Clip" - set category = "Object" - set src in usr - if (src.magazine) - if (istype(src.magazine, /obj/item/weapon/ammo/a763m)) - if (istype(src.loc, /mob)) - var/obj/item/W = src.loc:equipped() - var/emptyHand = (W == null) - if(emptyHand) - src.magazine.DblClick() - if(!istype(src.magazine.loc, /obj/item/weapon/gun/c96)) - src.magazine = null - else - src.magazine.loc = src.loc - src.magazine = null - ..() - return - -/obj/item/weapon/ammo/a763m/examine() - set src in usr - src.desc = text("There are [] round\s left!", src.amount_left) - ..() - return - -/obj/item/weapon/gun/c96/attackby(obj/item/weapon/ammo/a763m/A as obj, mob/living/user as mob) - ..() - - if (istype(A, /obj/item/weapon/ammo/a763m)) - if (src.magazine) - user << "\blue There is already a magazine in!" - return 1 - user.drop_item() - A.loc = src - flick("c96load",src) - src.magazine = A - return 1 - return - -/obj/item/weapon/gun/c96/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag) - - if (flag) - return - if ((istype(user, /mob/living/carbon/monkey)) && ticker.mode != "monkey") - usr << "\red You don't have the dexterity to do this!" - return - src.add_fingerprint(user) - if (src.magazine.amount_left < 1) - user.show_message("\red *click* *click*", 2) - return - playsound(user, 'Gunshot.ogg', 100, 1) - src.magazine.amount_left-- - for(var/mob/O in viewers(user, null)) - O.show_message(text("\red [] fires the c96 at []!", user, target), 1, "\red You hear a gunshot", 2) - var/turf/T = user.loc - var/turf/U = (istype(target, /atom/movable) ? target.loc : target) - if ((!( U ) || !( T ))) - return - while(!( istype(U, /turf) )) - U = U.loc - if (!( istype(T, /turf) )) - return - if (U == T) - user.bullet_act(PROJECTILE_BULLET, src, user.get_organ_target()) - return - var/obj/bullet/weakbullet/A = new /obj/bullet/weakbullet( user.loc ) - if (!istype(U, /turf)) - del(A) - return - A.def_zone = user.get_organ_target() - A.current = U - A.yo = U.y - T.y - A.xo = U.x - T.x - user.next_move = world.time + 4 - spawn( 0 ) - A.process() - return - return - - -//Luger P08 - - -/obj/item/weapon/gun/p08/examine() - set src in usr - if (src.magazine) - if (istype(src.magazine, /obj/item/weapon/ammo/a9x19p)) - src.desc = text("There are [] round\s left! Uses 9x19 Parabellum", src.magazine.amount_left) - else - src.desc = text("There are 0 rounds left! Uses 9x19 Parabellum") - ..() - return - -/obj/item/weapon/gun/p08/verb/eject() - set name = "Eject Clip" - set category = "Object" - set src in usr - if (src.magazine) - if (istype(src.magazine, /obj/item/weapon/ammo/a9x19p)) - if (istype(src.loc, /mob)) - var/obj/item/W = src.loc:equipped() - var/emptyHand = (W == null) - if(emptyHand) - src.magazine.DblClick() - if(!istype(src.magazine.loc, /obj/item/weapon/gun/p08)) - src.magazine = null - else - src.magazine.loc = src.loc - src.magazine = null - ..() - return - -/obj/item/weapon/ammo/a9x19p/examine() - set src in usr - src.desc = text("There are [] round\s left!", src.amount_left) - ..() - return - -/obj/item/weapon/gun/p08/attackby(obj/item/weapon/ammo/a9x19p/A as obj, mob/living/user as mob) - ..() - - if (istype(A, /obj/item/weapon/ammo/a9x19p)) - if (src.magazine) - user << "\blue There is already a magazine in!" - return 1 - user.drop_item() - A.loc = src - src.magazine = A - icon_state = "p08" - return 1 - return - -/obj/item/weapon/gun/p08/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag) - - if (flag) - return - if ((istype(user, /mob/living/carbon/monkey)) && ticker.mode != "monkey") - usr << "\red You don't have the dexterity to do this!" - return - src.add_fingerprint(user) - if (src.magazine.amount_left < 1) - user.show_message("\red *click* *click*", 2) - return - playsound(user, 'Gunshot.ogg', 100, 1) - src.magazine.amount_left-- - for(var/mob/O in viewers(user, null)) - O.show_message(text("\red [] fires the p08 at []!", user, target), 1, "\red You hear a gunshot", 2) - var/turf/T = user.loc - var/turf/U = (istype(target, /atom/movable) ? target.loc : target) - if ((!( U ) || !( T ))) - return - while(!( istype(U, /turf) )) - U = U.loc - if (!( istype(T, /turf) )) - return - if (U == T) - user.bullet_act(PROJECTILE_BULLET, src, user.get_organ_target()) - return - var/obj/bullet/weakbullet/A = new /obj/bullet/weakbullet( user.loc ) - if (!istype(U, /turf)) - del(A) - return - A.def_zone = user.get_organ_target() - A.current = U - A.yo = U.y - T.y - A.xo = U.x - T.x - user.next_move = world.time + 4 - spawn( 0 ) - A.process() - return - return - - -//GLOCK G21 - - -/obj/item/weapon/gun/glock/examine() - set src in usr - if (src.magazine) - if (istype(src.magazine, /obj/item/weapon/ammo/a45)) - src.desc = text("There are [] round\s left! Uses .45 ACP", src.magazine.amount_left) - else - src.desc = "There are 0 rounds left! Uses .45 ACP" - ..() - return - -/obj/item/weapon/gun/glock/verb/eject() - set name = "Eject Clip" - set category = "Object" - set src in usr - if (src.magazine) - if (istype(src.magazine, /obj/item/weapon/ammo/a45)) - if (istype(src.loc, /mob)) - var/obj/item/W = src.loc:equipped() - var/emptyHand = (W == null) - if(emptyHand) - src.magazine.DblClick() - if(!istype(src.magazine.loc, /obj/item/weapon/gun/glock)) - src.magazine = null - else - src.magazine.loc = src.loc - src.magazine = null - ..() - return - -/obj/item/weapon/ammo/a45/examine() - set src in usr - src.desc = text("There are [] round\s left!", src.amount_left) - ..() - return - -/obj/item/weapon/ammo/assaultmag/examine() - set src in usr - src.desc = text("There are [] round\s left!", src.amount_left) - ..() - return - -/obj/item/weapon/gun/glock/attackby(obj/item/weapon/ammo/a45/A as obj, mob/living/user as mob) - ..() - - if (istype(A, /obj/item/weapon/ammo/a45)) - if (src.magazine) - user << "\blue There is already a magazine in!" - return 1 - user.drop_item() - A.loc = src - src.magazine = A - return 1 - return - -/obj/item/weapon/gun/glock/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag) - - if (flag) - return - if ((istype(user, /mob/living/carbon/monkey)) && ticker.mode != "monkey") - usr << "\red You don't have the dexterity to do this!" - return - src.add_fingerprint(user) - if (src.magazine.amount_left < 1) - user.show_message("\red *click* *click*", 2) - return - playsound(user, 'Gunshot.ogg', 100, 1) - src.magazine.amount_left-- - for(var/mob/O in viewers(user, null)) - O.show_message(text("\red [] fires the glock at []!", user, target), 1, "\red You hear a gunshot", 2) - var/turf/T = user.loc - var/turf/U = (istype(target, /atom/movable) ? target.loc : target) - if ((!( U ) || !( T ))) - return - while(!( istype(U, /turf) )) - U = U.loc - if (!( istype(T, /turf) )) - return - if (U == T) - user.bullet_act(PROJECTILE_WEAKBULLET, src, user.get_organ_target()) - return - var/obj/bullet/weakbullet/A = new /obj/bullet/weakbullet( user.loc ) - if (!istype(U, /turf)) - del(A) - return - A.def_zone = user.get_organ_target() - A.current = U - A.yo = U.y - T.y - A.xo = U.x - T.x - user.next_move = world.time + 4 - spawn( 0 ) - A.process() - return - return - -/obj/item/weapon/gun/m1911/examine() - set src in usr - if (src.magazine) - if (istype(src.magazine, /obj/item/weapon/ammo/a45)) - src.desc = text("There are [] round\s left! Uses .45 ACP", src.magazine.amount_left) - else - src.desc = "There are 0 rounds left! Uses .45 ACP" - ..() - return - -/obj/item/weapon/gun/m1911/verb/eject() - set name = "Eject Clip" - set category = "Object" - set src in usr - if (src.magazine) - if (istype(src.magazine, /obj/item/weapon/ammo/a45)) - if (istype(src.loc, /mob)) - var/obj/item/W = src.loc:equipped() - var/emptyHand = (W == null) - if(emptyHand) - src.magazine.DblClick() - if(!istype(src.magazine.loc, /obj/item/weapon/gun/m1911)) - src.magazine = null - else - src.magazine.loc = src.loc - src.magazine = null - ..() - return - -/obj/item/weapon/gun/m1911/attackby(obj/item/weapon/ammo/a45/A as obj, mob/living/user as mob) - ..() - - if (istype(A, /obj/item/weapon/ammo/a45)) - if (src.magazine) - user << "\blue There is already a magazine in!" - return 1 - user.drop_item() - A.loc = src - src.magazine = A - return 1 - return - -/obj/item/weapon/gun/m1911/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag) - - if (flag) - return - if ((istype(user, /mob/living/carbon/monkey)) && ticker.mode != "monkey") - usr << "\red You don't have the dexterity to do this!" - return - src.add_fingerprint(user) - if (src.magazine.amount_left < 1) - user.show_message("\red *click* *click*", 2) - return - playsound(user, 'Gunshot.ogg', 100, 1) - src.magazine.amount_left-- - for(var/mob/O in viewers(user, null)) - O.show_message(text("\red [] fires the m1911 at []!", user, target), 1, "\red You hear a gunshot", 2) - var/turf/T = user.loc - var/turf/U = (istype(target, /atom/movable) ? target.loc : target) - if ((!( U ) || !( T ))) - return - while(!( istype(U, /turf) )) - U = U.loc - if (!( istype(T, /turf) )) - return - if (U == T) - user.bullet_act(PROJECTILE_BULLET, src, user.get_organ_target()) - return - var/obj/bullet/A = new /obj/bullet( user.loc ) - if (!istype(U, /turf)) - del(A) - return - A.def_zone = user.get_organ_target() - A.current = U - A.yo = U.y - T.y - A.xo = U.x - T.x - user.next_move = world.time + 4 - spawn( 0 ) - A.process() - return - return - -/obj/item/weapon/gun/carbine/examine() - set src in usr - if (src.magazine) - if (istype(src.magazine, /obj/item/weapon/ammo/assaultmag)) - src.desc = text("There are [] round\s left! Uses 5.56x45mm NATO", src.magazine.amount_left) - else - src.desc = "There are 0 rounds left! Uses 5.56x45mm NATO" - ..() - return - -/obj/item/weapon/gun/carbine/verb/eject() - set name = "Eject Clip" - set category = "Object" - set src in usr - if (src.magazine) - if (istype(src.magazine, /obj/item/weapon/ammo/assaultmag)) - if (istype(src.loc, /mob)) - var/obj/item/W = src.loc:equipped() - var/emptyHand = (W == null) - if(emptyHand) - src.magazine.DblClick() - if(!istype(src.magazine.loc, /obj/item/weapon/gun/m1911)) - src.magazine = null - src.icon_state = "carbinenomag" - else - src.magazine.loc = src.loc - src.magazine = null - ..() - return - -/obj/item/weapon/gun/carbine/attackby(obj/item/weapon/ammo/assaultmag/A as obj, mob/living/user as mob) - ..() - - if (istype(A, /obj/item/weapon/ammo/assaultmag)) - if (src.magazine) - user << "\blue There is already a magazine in!" - return 1 - user.drop_item() - A.loc = src - src.magazine = A - src.icon_state = "carbine" - return 1 - return - -/obj/item/weapon/gun/carbine/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag) - - if (flag) - return - if ((istype(user, /mob/living/carbon/monkey)) && ticker.mode != "monkey") - usr << "\red You don't have the dexterity to do this!" - return - src.add_fingerprint(user) - if (src.magazine.amount_left < 1) - user.show_message("\red *click* *click*", 2) - return - playsound(user, 'Gunshot.ogg', 100, 1) - src.magazine.amount_left-- - for(var/mob/O in viewers(user, null)) - O.show_message(text("\red [] fires the carbine at []!", user, target), 1, "\red You hear a gunshot", 2) - var/turf/T = user.loc - var/turf/U = (istype(target, /atom/movable) ? target.loc : target) - if ((!( U ) || !( T ))) - return - while(!( istype(U, /turf) )) - U = U.loc - if (!( istype(T, /turf) )) - return - if (U == T) - user.bullet_act(PROJECTILE_WEAKBULLET, src, user.get_organ_target()) - return - var/obj/bullet/weakbullet/A = new /obj/bullet/weakbullet( user.loc ) - if (!istype(U, /turf)) - del(A) - return - A.def_zone = user.get_organ_target() - A.current = U - A.yo = U.y - T.y - A.xo = U.x - T.x - user.next_move = world.time + 4 - spawn( 0 ) - A.process() - return - return - - -/obj/item/weapon/gun/ak331/examine() - set src in usr - if (src.magazine) - if (istype(src.magazine, /obj/item/weapon/ammo/assaultmag)) - src.desc = text("There are [] round\s left! Uses 5.56x45mm NATO", src.magazine.amount_left) - else - src.desc = "There are 0 rounds left! Uses 5.56x45mm NATO" - ..() - return - -/obj/item/weapon/gun/ak331/verb/eject() - set name = "Eject Clip" - set category = "Object" - set src in usr - if (src.magazine) - if (istype(src.magazine, /obj/item/weapon/ammo/assaultmag)) - if (istype(src.loc, /mob)) - var/obj/item/W = src.loc:equipped() - var/emptyHand = (W == null) - if(emptyHand) - src.magazine.DblClick() - if(!istype(src.magazine.loc, /obj/item/weapon/gun/m1911)) - src.magazine = null - src.icon_state = "ak331nomag" - else - src.magazine.loc = src.loc - src.magazine = null - ..() - return - -/obj/item/weapon/gun/ak331/attackby(obj/item/weapon/ammo/assaultmag/A as obj, mob/living/user as mob) - ..() - - if (istype(A, /obj/item/weapon/ammo/assaultmag)) - if (src.magazine) - user << "\blue There is already a magazine in!" - return 1 - user.drop_item() - A.loc = src - src.magazine = A - src.icon_state = "ak331" - return 1 - return - -/obj/item/weapon/gun/ak331/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag) - - if (flag) - return - if ((istype(user, /mob/living/carbon/monkey)) && ticker.mode != "monkey") - usr << "\red You don't have the dexterity to do this!" - return - src.add_fingerprint(user) - if (src.magazine.amount_left < 1) - user.show_message("\red *click* *click*", 2) - return - playsound(user, 'Gunshot.ogg', 100, 1) - src.magazine.amount_left-- - for(var/mob/O in viewers(user, null)) - O.show_message(text("\red [] fires the ak331 at []!", user, target), 1, "\red You hear a gunshot", 2) - var/turf/T = user.loc - var/turf/U = (istype(target, /atom/movable) ? target.loc : target) - if ((!( U ) || !( T ))) - return - while(!( istype(U, /turf) )) - U = U.loc - if (!( istype(T, /turf) )) - return - if (U == T) - user.bullet_act(PROJECTILE_BULLET, src, user.get_organ_target()) - return - var/obj/bullet/A = new /obj/bullet( user.loc ) - if (!istype(U, /turf)) - del(A) - return - A.def_zone = user.get_organ_target() - A.current = U - A.yo = U.y - T.y - A.xo = U.x - T.x - user.next_move = world.time + 4 - spawn( 0 ) - A.process() - return - return \ No newline at end of file diff --git a/code/game/objects/items/weapons/guns_new.dm b/code/game/objects/items/weapons/guns_new.dm new file mode 100644 index 0000000000..f1aaefb5d4 --- /dev/null +++ b/code/game/objects/items/weapons/guns_new.dm @@ -0,0 +1,693 @@ +var/const/PROJECTILE_TASER = 1 +var/const/PROJECTILE_LASER = 2 +var/const/PROJECTILE_BULLET = 3 +var/const/PROJECTILE_PULSE = 4 +var/const/PROJECTILE_BOLT = 5 +var/const/PROJECTILE_WEAKBULLET = 6 +var/const/PROJECTILE_TELEGUN = 7 +var/const/PROJECTILE_DART = 8 + +/////////////////////////////////////////////// +////////////////AMMO SECTION/////////////////// +/////////////////////////////////////////////// + +/obj/item/projectile + name = "projectile" + icon = 'projectiles.dmi' + icon_state = "bullet" + density = 1 + throwforce = 0.1 //an attempt to make it possible to shoot your way through space + unacidable = 1//Just to be sure. + anchored = 1.0 + flags = FPRINT | TABLEPASS | CONDUCT | ONBELT + var + def_zone = "" + damage_type = PROJECTILE_BULLET + mob/firer = null + silenced = 0 + yo = null + xo = null + current = null + + weakbullet + damage_type = PROJECTILE_WEAKBULLET + + beam + name = "laser" + damage_type = PROJECTILE_LASER + icon_state = "laser" + + pulse + name = "pulse" + damage_type = PROJECTILE_PULSE + icon_state = "u_laser" + + dart + name = "dart" + damage_type = PROJECTILE_DART + icon_state = "toxin" + + electrode + name = "electrode" + damage_type = PROJECTILE_TASER + icon_state = "spark" + + bolt + name = "bolt" + damage_type = PROJECTILE_BOLT + icon_state = "cbbolt" + + Bump(atom/A as mob|obj|turf|area) + spawn(0) + if(A) + A.bullet_act(damage_type, src, def_zone) + if(istype(A,/turf) && !istype(src, /obj/item/projectile/beam)) + for(var/obj/O in A) + O.bullet_act(damage_type, src, def_zone) + if(firer && istype(A, /mob)) + var/mob/M = A + if(!silenced) + visible_message("\red [A.name] has been shot by [firer.name].", "\blue You hear a [istype(src, /obj/item/projectile/beam) ? "gunshot" : "laser blast"].") + else + if(M) + if(M.client) + M << "\red You've been shot!" + if(istype(firer, /mob)) + M.attack_log += text("[] []/[] shot []/[] with a []", world.time, firer, firer.client, M, M.client, src) + firer.attack_log += text("[] []/[] shot []/[] with a []", world.time, firer, firer.client, M, M.client, src) + else + M.attack_log += text("[] UNKOWN SUBJECT (No longer exists) shot []/[] with a []", world.time, M, M.client, src) + del(src) + return + + CanPass(atom/movable/mover, turf/target, height=0, air_group=0) + if(air_group || (height==0)) return 1 + + if(istype(mover, /obj/item/projectile)) + return prob(95) + else + return 1 + + process() + spawn while(src) + if ((!( current ) || loc == current)) + current = locate(min(max(x + xo, 1), world.maxx), min(max(y + yo, 1), world.maxy), z) + if ((x == 1 || x == world.maxx || y == 1 || y == world.maxy)) + del(src) + return + step_towards(src, current) + sleep( 1 ) + return + +/obj/item/ammo_casing + name = "bullet casing (.375)" + desc = "A .357 bullet casing." + icon = 'ammo.dmi' + icon_state = "s-casing" + flags = FPRINT | TABLEPASS | CONDUCT | ONBELT + throwforce = 1 + var + caliber = "357" //Which kind of guns it can be loaded into + obj/item/projectile/BB //The loaded bullet + New() + BB = new /obj/item/projectile(src) + pixel_x = rand(-10.0, 10) + pixel_y = rand(-10.0, 10) + dir = pick(cardinal) + + + c38 + name = "bullet casing (.38)" + desc = "A .38 bullet casing." + caliber = "38" + + New() + BB = new /obj/item/projectile/weakbullet(src) + pixel_x = rand(-10.0, 10) + pixel_y = rand(-10.0, 10) + dir = pick(cardinal) + + shotgun + desc = "A 12gauge shell." + name = "12 gauge shell" + icon_state = "gshell" + caliber = "shotgun" + m_amt = 25000 + + New() + BB = new /obj/item/projectile + src.pixel_x = rand(-10.0, 10) + src.pixel_y = rand(-10.0, 10) + blank + desc = "A blank shell." + name = "blank shell" + icon_state = "blshell" + m_amt = 500 + + New() + src.pixel_x = rand(-10.0, 10) + src.pixel_y = rand(-10.0, 10) + + beanbag + desc = "A weak beanbag shell." + name = "beanbag shell" + icon_state = "bshell" + m_amt = 10000 + + New() + BB = new /obj/item/projectile/weakbullet + src.pixel_x = rand(-10.0, 10) + src.pixel_y = rand(-10.0, 10) + + dart + desc = "A dart for use in shotguns.." + name = "shotgun dart" + icon_state = "blshell" //someone, draw the icon, please. + m_amt = 50000 //because it's like, instakill. + + New() + BB = new /obj/item/projectile/dart + src.pixel_x = rand(-10.0, 10) + src.pixel_y = rand(-10.0, 10) + +/obj/item/ammo_magazine + name = "ammo box (.357)" + desc = "A box of .357 ammo" + icon_state = "357" + icon = 'ammo.dmi' + flags = FPRINT | TABLEPASS | CONDUCT | ONBELT + item_state = "syringe_kit" + m_amt = 50000 + throwforce = 2 + w_class = 1.0 + throw_speed = 4 + throw_range = 20 + var + list/stored_ammo = list() + + New() + for(var/i = 1, i <= 7, i++) + stored_ammo += new /obj/item/ammo_casing(src) + update_icon() + + update_icon() + icon_state = text("[initial(icon_state)]-[]", stored_ammo.len) + desc = text("There are [] shell\s left!", stored_ammo.len) + + c38 + name = "speed loader (.38)" + icon_state = "38" + New() + for(var/i = 1, i <= 7, i++) + stored_ammo += new /obj/item/ammo_casing/c38(src) + update_icon() + + +/////////////////////////////////////////////// +//////////////////////Guns///////////////////// +/////////////////////////////////////////////// + +/obj/item/weapon/gun + name = "gun" + desc = "Its a gun. It's pretty terrible, though." + icon = 'gun.dmi' + icon_state = "detective" + item_state = "gun" + flags = FPRINT | TABLEPASS | CONDUCT | ONBELT | USEDELAY + m_amt = 2000 + w_class = 2.0 + throw_speed = 4 + throwforce = 5 + throw_range = 10 + force = 10 + + origin_tech = "combat=1" + var + fire_sound = 'Gunshot.ogg' + obj/item/projectile/in_chamber + caliber = "" + silenced = 0 + badmin = 0 + + projectile + desc = "A classic revolver. Uses 357 ammo" + name = "revolver" + icon_state = "revolver" + caliber = "357" + origin_tech = "combat=2;materials=2" + w_class = 3.0 + throw_speed = 2 + throw_range = 10 + m_amt = 1000 + force = 24 + var + list/loaded = list() + max_shells = 7 + load_method = 0 //0 = Single shells or quick loader, 1 = magazine + + load_into_chamber() + if(!loaded.len) + return 0 + var/obj/item/ammo_casing/AC = loaded[1] //load next casing. + loaded -= AC //Remove casing from loaded list. + AC.loc = get_turf(src) //Eject casing onto ground. + if(AC.BB) + in_chamber = AC.BB //Load projectile into chamber. + AC.BB.loc = src //Set projectile loc to gun. + return 1 + else + return 0 + + New() + for(var/i = 1, i <= 7, i++) + loaded += new /obj/item/ammo_casing(src) + update_icon() + + attackby(var/obj/item/A as obj, mob/user as mob) + var/num_loaded = 0 + if(istype(A, /obj/item/ammo_magazine)) + var/obj/item/ammo_magazine/AM = A + for(var/obj/item/ammo_casing/AC in AM.stored_ammo) + if(loaded.len >= max_shells) + break + if(AC.caliber == caliber && loaded.len < max_shells) + AC.loc = src + AM.stored_ammo -= AC + loaded += AC + num_loaded++ + else if(istype(A, /obj/item/ammo_casing) && !load_method) + var/obj/item/ammo_casing/AC = A + if(AC.caliber == caliber && loaded.len < max_shells) + user.drop_item() + AC.loc = src + loaded += AC + num_loaded++ + if(num_loaded) + user << text("\blue You load [] shell\s into the gun!", num_loaded) + A.update_icon() + return + + update_icon() + desc = initial(desc) + text(" Has [] rounds remaining.", loaded.len) + + detective + desc = "A cheap Martian knock-off of a Smith & Wesson Model 10. Uses .38-Special rounds." + name = ".38 revolver" + max_shells = 7 + force = 14.0 + caliber = "38" + + New() + for(var/i = 1, i <= 5, i++) + loaded += new /obj/item/ammo_casing/c38(src) + update_icon() + + special_check(var/mob/living/carbon/human/M) + if(istype(M) && M) + if(istype(M.w_uniform, /obj/item/clothing/under/det) && istype(M.head, /obj/item/clothing/head/det_hat) && istype(M.wear_suit, /obj/item/clothing/suit/det_suit)) + return 1 + M << "\red You just don't feel cool enough to use this gun looking like that." + return 0 + mateba + name = "mateba" + desc = "When you absolutely, positively need a 10mm hole in the other guy. Uses .357 ammo." + icon_state = "mateba" + + shotgun + name = "shotgun" + desc = "Useful for sweeping alleys." + icon_state = "shotgun" + max_shells = 2 + w_class = 4.0 + force = 7.0 + caliber = "shotgun" + + New() + update_icon() + + combat + name = "combat shotgun" + icon_state = "cshotgun" + w_class = 4.0 + force = 12.0 + flags = FPRINT | TABLEPASS | CONDUCT | USEDELAY | ONBACK + max_shells = 8 + origin_tech = "combat=3" + + energy + icon_state = "energy" + name = "energy" + desc = "A basic energy-based gun with two settings: Stun and kill." + fire_sound = 'Laser.ogg' + var + var/obj/item/weapon/cell/power_supply + mode = 0 //0 = stun, 1 = kill + charge_cost = 100 //How much energy is needed to fire. + + New() + power_supply = new(src) + power_supply.give(power_supply.maxcharge) + + load_into_chamber() + if(in_chamber) + return 1 + if(!power_supply) + return 0 + if(power_supply.charge < charge_cost) + return 0 + switch (mode) + if(0) + in_chamber = new /obj/item/projectile/electrode(src) + if(1) + in_chamber = new /obj/item/projectile/beam(src) + power_supply.use(charge_cost) + return 1 + + attack_self(mob/living/user as mob) + switch(mode) + if(0) + mode = 1 + charge_cost = 100 + user << "\red [src.name] is now set to kill." + if(1) + mode = 0 + charge_cost = 100 + user << "\red [src.name] is now set to stun." + update_icon() + return + + update_icon() + var/ratio = power_supply.charge / power_supply.maxcharge + ratio = round(ratio, 0.25) * 100 + icon_state = text("[][]", initial(icon_state), ratio) + + laser + name = "laser gun" + icon_state = "laser" + w_class = 3.0 + throw_speed = 2 + throw_range = 10 + force = 7.0 + m_amt = 2000 + origin_tech = "combat=3;magnets=2" + + captain + icon_state = "caplaser" + desc = "This is an antique laser gun. All craftsmanship is of the highest quality. It is decorated with assistant leather and chrome. The object menaces with spikes of energy. On the item is an image of Space Station 13. The station is exploding." + force = 10 + origin_tech = null + + cyborg + load_into_chamber() + if(in_chamber) + return 1 + if(isrobot(src.loc)) + var/mob/living/silicon/robot/R = src.loc + R.cell.use(20) + in_chamber = new /obj/item/projectile/beam(src) + return 1 + return 0 + + pulse_rifle + name = "pulse rifle" + desc = "A heavy-duty, pulse-based energy weapon with multiple fire settings, preferred by front-line combat personnel." + icon_state = "pulse" + force = 15 + mode = 2 + fire_sound = 'pulse.ogg' + load_into_chamber() + if(in_chamber) + return 1 + if(power_supply.charge < charge_cost) + return 0 + switch (mode) + if(0) + in_chamber = new /obj/item/projectile/electrode(src) + if(1) + in_chamber = new /obj/item/projectile/beam(src) + if(2) + in_chamber = new /obj/item/projectile/beam/pulse(src) + power_supply.use(charge_cost) + return 1 + + attack_self(mob/living/user as mob) + mode++ + switch(mode) + if(1) + user << "\red [src.name] is now set to kill." + charge_cost = 100 + if(2) + user << "\red [src.name] is now set to destroy." + charge_cost = 200 + else + mode = 0 + user << "\red [src.name] is now set to stun." + charge_cost = 50 + New() + power_supply = new /obj/item/weapon/cell/super(src) + power_supply.give(power_supply.maxcharge) + update_icon() + + nuclear + name = "Advanced Energy Gun" + desc = "An energy gun with an experimental miniaturized reactor." + origin_tech = "combat=3;materials=5;powerstorage=3" + var/lightfail = 0 + icon_state = "nucgun" + + New() + ..() + charge() + + proc + charge() + if(power_supply.charge < power_supply.maxcharge) + if(failcheck()) + power_supply.give(100) + update_icon() + if(!crit_fail) + spawn(50) charge() + + failcheck() + lightfail = 0 + if (prob(src.reliability)) return 1 //No failure + if (prob(src.reliability)) + for (var/mob/M in range(0,src)) //Only a minor failure, enjoy your radiation if you're in the same tile or carrying it + if (src in M.contents) + M << "\red Your gun feels pleasantly warm for a moment." + else + M << "\red You feel a warm sensation." + M.radiation += rand(1,40) + lightfail = 1 + else + for (var/mob/M in range(rand(1,4),src)) //Big failure, TIME FOR RADIATION BITCHES + if (src in M.contents) + M << "\red Your gun's reactor overloads!" + M << "\red You feel a wave of heat wash over you." + M.radiation += 100 + crit_fail = 1 //break the gun so it stops recharging + update_icon() + + update_charge() + if (crit_fail) + overlays += "nucgun-whee" + return + var/ratio = power_supply.charge / power_supply.maxcharge + ratio = round(ratio, 0.25) * 100 + overlays += text("nucgun-[]", ratio) + + update_reactor() + if(crit_fail) + overlays += "nucgun-crit" + return + if(lightfail) + overlays += "nucgun-medium" + else if ((power_supply.charge/power_supply.maxcharge) <= 0.5) + overlays += "nucgun-light" + else + overlays += "nucgun-clean" + + update_mode() + if (mode == 2) + overlays += "nucgun-stun" + else if (mode == 1) + overlays += "nucgun-kill" + + emp_act(severity) + ..() + reliability -= round(15/severity) + + update_icon() + overlays = null + update_charge() + update_reactor() + update_mode() + + taser + name = "taser gun" + icon_state = "taser" + fire_sound = 'Taser.ogg' + charge_cost = 100 + + load_into_chamber() + if(in_chamber) + return 1 + if(power_supply.charge <= charge_cost) + return 0 + in_chamber = new /obj/item/projectile/electrode(src) + power_supply.use(charge_cost) + return 1 + + attack_self(mob/living/user as mob) + return + + New() + power_supply = new /obj/item/weapon/cell/crap(src) + power_supply.give(power_supply.maxcharge) + + cyborg + load_into_chamber() + if(in_chamber) + return 1 + if(isrobot(src.loc)) + var/mob/living/silicon/robot/R = src.loc + R.cell.use(20) + in_chamber = new /obj/item/projectile/electrode(src) + return 1 + return 0 + + crossbow + name = "mini energy-crossbow" + desc = "A weapon favored by many of the syndicates stealth specialists." + icon_state = "crossbow" + w_class = 2.0 + item_state = "crossbow" + force = 4.0 + throw_speed = 2 + throw_range = 10 + m_amt = 2000 + origin_tech = "combat=2;magnets=2;syndicate=2" + silenced = 1 + fire_sound = 'Genhit.ogg' + + New() + power_supply = new /obj/item/weapon/cell/crap(src) + power_supply.give(power_supply.maxcharge) + charge() + + proc/charge() + if(power_supply) + if(power_supply.charge < power_supply.maxcharge) power_supply.give(100) + spawn(50) charge() + + update_icon() + return + + attack_self(mob/living/user as mob) + return + + load_into_chamber() + if(in_chamber) + return 1 + if(power_supply.charge <= charge_cost) + return 0 + in_chamber = new /obj/item/projectile/bolt(src) + power_supply.use(charge_cost) + return 1 + + cyborg + load_into_chamber() + if(in_chamber) + return 1 + if(isrobot(src.loc)) + var/mob/living/silicon/robot/R = src.loc + R.cell.use(20) + in_chamber = new /obj/item/projectile/electrode(src) + return 1 + return 0 + proc + load_into_chamber() + in_chamber = new /obj/item/projectile/weakbullet(src) + return 1 + + badmin_ammo() //CREEEEEED!!!!!!!!! + switch(badmin) + if(1) + in_chamber = new /obj/item/projectile/electrode(src) + if(2) + in_chamber = new /obj/item/projectile/weakbullet(src) + if(3) + in_chamber = new /obj/item/projectile(src) + if(4) + in_chamber = new /obj/item/projectile/beam(src) + if(5) + in_chamber = new /obj/item/projectile/beam/pulse(src) + else + return 0 + if(!istype(src, /obj/item/weapon/gun/energy)) + var/obj/item/ammo_casing/AC = new(get_turf(src)) + AC.name = "unidentifiable bullet casing" + AC.desc = "This casing has the Central Command Insignia etched into the side." + return 1 + + special_check(var/mob/M) //Placeholder for any special checks, like detective's revolver. + return 1 + + emp_act(severity) + for(var/obj/O in contents) + O.emp_act(severity) + + afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj) + if(istype(target, /obj/machinery/recharger) && istype(src, /obj/item/weapon/gun/energy)) + return + if(istype(user, /mob/living)) + var/mob/living/M = user + if ((M.mutations & CLOWN) && prob(50)) + M << "\red The [src.name] blows up in your face." + M.take_organ_damage(0,20) + M.drop_item() + del(src) + return + if ((istype(user, /mob/living/carbon/monkey)) && ticker.mode != "monkey") + user << "\red You don't have the dexterity to do this!" + return + + add_fingerprint(user) + + var/turf/curloc = user.loc + var/atom/targloc = get_turf(target) + if (!targloc || !istype(targloc, /turf) || !curloc) + return + + if(badmin) + badmin_ammo() + else if(!special_check()) + return + else if(!load_into_chamber()) + user << "\red *click* *click*"; + return + + update_icon() + + playsound(user, fire_sound, 50, 1) + + if(!in_chamber) + return + + in_chamber.firer = user + in_chamber.def_zone = user.get_organ_target() + + if(targloc == curloc) + user.bullet_act(in_chamber.damage_type) + del(in_chamber) + else + in_chamber.loc = get_turf(user) + user.next_move = world.time + 4 + in_chamber.silenced = silenced + in_chamber.current = curloc + in_chamber.yo = targloc.y - curloc.y + in_chamber.xo = targloc.x - curloc.x + spawn() + in_chamber.process() + sleep(1) + in_chamber = null diff --git a/code/game/objects/items/weapons/papers_bins.dm b/code/game/objects/items/weapons/papers_bins.dm index 35706b34af..6d12a3028e 100644 --- a/code/game/objects/items/weapons/papers_bins.dm +++ b/code/game/objects/items/weapons/papers_bins.dm @@ -538,7 +538,7 @@ CLIPBOARDS del(src) return if("l_gun") - var/obj/item/weapon/gun/energy/laser_gun/W = new /obj/item/weapon/gun/energy/laser_gun( M ) + var/obj/item/weapon/gun/energy/laser/W = new /obj/item/weapon/gun/energy/laser( M ) if (M.hand) M.l_hand = W else @@ -549,7 +549,7 @@ CLIPBOARDS del(src) return if("t_gun") - var/obj/item/weapon/gun/energy/taser_gun/W = new /obj/item/weapon/gun/energy/taser_gun( M ) + var/obj/item/weapon/gun/energy/taser/W = new /obj/item/weapon/gun/energy/taser( M ) if (M.hand) M.l_hand = W else diff --git a/code/game/objects/items/weapons/uplinks.dm b/code/game/objects/items/weapons/uplinks.dm index c3ed7de00b..764f3bf3a5 100644 --- a/code/game/objects/items/weapons/uplinks.dm +++ b/code/game/objects/items/weapons/uplinks.dm @@ -78,12 +78,11 @@ SYNDICATE UPLINK if("revolver") if (src.uses >= 6) src.uses -= 6 - var/obj/item/weapon/gun/revolver/O = new /obj/item/weapon/gun/revolver(get_turf(src)) - O.bullets = 7 + new /obj/item/weapon/gun/projectile(get_turf(src)) if("revolver_ammo") if (src.uses >= 2) src.uses -= 2 - new /obj/item/weapon/ammo/a357(get_turf(src)) + new /obj/item/ammo_magazine(get_turf(src)) if("xbow") if (src.uses >= 5) src.uses -= 5 diff --git a/code/game/objects/storage/kit.dm b/code/game/objects/storage/kit.dm index 3949107bd9..ca5941a74a 100644 --- a/code/game/objects/storage/kit.dm +++ b/code/game/objects/storage/kit.dm @@ -12,13 +12,13 @@ /obj/item/weapon/storage/blankbox/New() - new /obj/item/weapon/ammo/shell/blank( src ) - new /obj/item/weapon/ammo/shell/blank( src ) - new /obj/item/weapon/ammo/shell/blank( src ) - new /obj/item/weapon/ammo/shell/blank( src ) - new /obj/item/weapon/ammo/shell/blank( src ) - new /obj/item/weapon/ammo/shell/blank( src ) - new /obj/item/weapon/ammo/shell/blank( src ) + new /obj/item/ammo_casing/shotgun/blank( src ) + new /obj/item/ammo_casing/shotgun/blank( src ) + new /obj/item/ammo_casing/shotgun/blank( src ) + new /obj/item/ammo_casing/shotgun/blank( src ) + new /obj/item/ammo_casing/shotgun/blank( src ) + new /obj/item/ammo_casing/shotgun/blank( src ) + new /obj/item/ammo_casing/shotgun/blank( src ) ..() return diff --git a/code/game/objects/storage/storage.dm b/code/game/objects/storage/storage.dm index af59727e4b..059c03b5ed 100644 --- a/code/game/objects/storage/storage.dm +++ b/code/game/objects/storage/storage.dm @@ -75,7 +75,7 @@ src.orient_objs(4, 10, 4, 3) else if(istype(user, /mob/living/carbon/human) && src == H.belt)//only humans have belts src.orient_objs(1, 3, 8, 3) - else + else src.orient_objs(7, 8, 10, 7) return diff --git a/code/game/objects/weapons.dm b/code/game/objects/weapons.dm index 97c567ba6f..96e8b2e042 100644 --- a/code/game/objects/weapons.dm +++ b/code/game/objects/weapons.dm @@ -940,142 +940,6 @@ src.part3.release() return -/obj/bullet/Bump(atom/A as mob|obj|turf|area) - spawn(0) - if(A) - A.bullet_act(PROJECTILE_BULLET, src, def_zone) - if(istype(A,/turf)) - for(var/obj/O in A) - O.bullet_act(PROJECTILE_BULLET, src, def_zone) - - del(src) - return - -/obj/bullet/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group || (height==0)) return 1 - - if(istype(mover, /obj/bullet)) - return prob(95) - else - return 1 - -/obj/bullet/weakbullet/Bump(atom/A as mob|obj|turf|area) - spawn(0) - if(A) - A.bullet_act(PROJECTILE_WEAKBULLET, src) - if(istype(A,/turf)) - for(var/obj/O in A) - O.bullet_act(PROJECTILE_WEAKBULLET, src, def_zone) - - del(src) - return - -/obj/bullet/electrode/Bump(atom/A as mob|obj|turf|area) - spawn(0) - if(A) - A.bullet_act(PROJECTILE_TASER) - if(istype(A,/turf)) - for(var/obj/O in A) - O.bullet_act(PROJECTILE_TASER, src, def_zone) - del(src) - return - -/obj/bullet/cbbolt/Bump(atom/A as mob|obj|turf|area) - spawn(0) - if(A) - A.bullet_act(PROJECTILE_BOLT) - if(istype(A,/turf)) - for(var/obj/O in A) - O.bullet_act(PROJECTILE_BOLT, src, def_zone) - del(src) - return - -/obj/bullet/neurodart/Bump(atom/A as mob|obj|turf|area) - spawn(0) - if(A) - A.bullet_act(PROJECTILE_DART) - if(istype(A,/turf)) - for(var/obj/O in A) - O.bullet_act(PROJECTILE_DART, src, def_zone) - del(src) - return - -/obj/bullet/teleshot/Bump(atom/A as mob|obj|turf|area) - if (src.target == null) - var/list/turfs = list( ) - for(var/turf/T in orange(10, src)) - if(T.x>world.maxx-4 || T.x<4) continue //putting them at the edge is dumb - if(T.y>world.maxy-4 || T.y<4) continue - turfs += T - if(turfs) - src.target = pick(turfs) - if (!src.target) - del(src) - return - spawn(0) - if(A) - var/turf/T = get_turf(A) - for(var/atom/movable/M in T) - if(istype(M, /obj/effects)) //sparks don't teleport - continue - if (M.anchored) - continue - if (istype(M, /atom/movable)) - var/datum/effects/system/spark_spread/s = new /datum/effects/system/spark_spread - s.set_up(5, 1, M) - s.start() - if(prob(src.failchance)) //oh dear a problem, put em in deep space - do_teleport(M, locate(rand(5, world.maxx - 5), rand(5, world.maxy -5), 3), 0) - else - do_teleport(M, src.target, 2) - del(src) - return - -/obj/bullet/proc/process() - spawn while(src) - if ((!( src.current ) || src.loc == src.current)) - src.current = locate(min(max(src.x + src.xo, 1), world.maxx), min(max(src.y + src.yo, 1), world.maxy), src.z) - if ((src.x == 1 || src.x == world.maxx || src.y == 1 || src.y == world.maxy)) - //SN src = null - del(src) - return - step_towards(src, src.current) - sleep( 1 ) - return - -/obj/beam/a_laser/Bump(atom/A as mob|obj|turf) - spawn(0) - if(A) - A.bullet_act(PROJECTILE_LASER, src, def_zone) - del(src) - -/obj/beam/a_laser/proc/process() - spawn while(src) - //world << text("laser at [] []:[], target is [] []:[]", src.loc, src.x, src.y, src:current, src.current:x, src.current:y) - if ((!( src.current ) || src.loc == src.current)) - src.current = locate(min(max(src.x + src.xo, 1), world.maxx), min(max(src.y + src.yo, 1), world.maxy), src.z) - //world << text("current changed: target is now []. location was [],[], added [],[]", src.current, src.x, src.y, src.xo, src.yo) - if ((src.x == 1 || src.x == world.maxx || src.y == 1 || src.y == world.maxy)) - //world << text("off-world, deleting") - //SN src = null - del(src) - return - step_towards(src, src.current) - // make it able to hit lying-down folk - var/list/dudes = list() - for(var/mob/living/M in src.loc) - dudes += M - if(dudes.len) - src.Bump(pick(dudes)) - //world << text("laser stepped, now [] []:[], target is [] []:[]", src.loc, src.x, src.y, src.current, src.current:x, src.current:y) - src.life-- - if (src.life <= 0) - //SN src = null - del(src) - return - sleep(1) - return - /obj/beam/i_beam/proc/hit() //world << "beam \ref[src]: hit" if (src.master) diff --git a/code/game/objects/window.dm b/code/game/objects/window.dm index 51e96553ff..df610de59e 100644 --- a/code/game/objects/window.dm +++ b/code/game/objects/window.dm @@ -43,7 +43,7 @@ del(src) /obj/window/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(istype(mover, /obj/beam)) + if(istype(mover, /obj/beam) || istype(mover, /obj/item/projectile/beam)) return 1 if (src.dir == SOUTHWEST || src.dir == SOUTHEAST || src.dir == NORTHWEST || src.dir == NORTHEAST) return 0 //full tile window, you can't move into it! @@ -54,7 +54,7 @@ return 1 /obj/window/CheckExit(atom/movable/O as mob|obj, target as turf) - if(istype(O, /obj/beam)) + if(istype(O, /obj/beam) || istype(O, /obj/item/projectile/beam)) return 1 if (get_dir(O.loc, target) == src.dir) return 0 diff --git a/code/game/research/designs.dm b/code/game/research/designs.dm index 32efb0b787..4d3b46c7d7 100644 --- a/code/game/research/designs.dm +++ b/code/game/research/designs.dm @@ -919,7 +919,7 @@ datum build_type = PROTOLATHE materials = list("$metal" = 5000, "$glass" = 1000, "$uranium" = 500) reliability_base = 76 - build_path = "/obj/item/weapon/gun/energy/general/nuclear" + build_path = "/obj/item/weapon/gun/energy/nuclear" large_grenade name = "Large Grenade" diff --git a/code/modules/admin/verbs/striketeam.dm b/code/modules/admin/verbs/striketeam.dm index d17301330d..8e74cd1b34 100644 --- a/code/modules/admin/verbs/striketeam.dm +++ b/code/modules/admin/verbs/striketeam.dm @@ -157,7 +157,7 @@ var/global/sent_strike_team = 0 equip_if_possible(new /obj/item/weapon/storage/backpack(src), slot_back) - equip_if_possible(new /obj/item/weapon/ammo/a357(src), slot_in_backpack) + equip_if_possible(new /obj/item/ammo_magazine(src), slot_in_backpack) equip_if_possible(new /obj/item/weapon/storage/firstaid/regular(src), slot_in_backpack) equip_if_possible(new /obj/item/weapon/storage/flashbang_kit(src), slot_in_backpack) equip_if_possible(new /obj/item/device/flashlight(src), slot_in_backpack) @@ -170,10 +170,8 @@ var/global/sent_strike_team = 0 equip_if_possible(new /obj/item/weapon/sword(src), slot_l_store) equip_if_possible(new /obj/item/weapon/flashbang(src), slot_r_store) equip_if_possible(new /obj/item/weapon/tank/emergency_oxygen(src), slot_s_store) + equip_if_possible(new /obj/item/weapon/gun/projectile/mateba(src), slot_belt) - var/obj/item/weapon/gun/revolver/GUN = new /obj/item/weapon/gun/revolver/mateba(src) - GUN.bullets = 7 - equip_if_possible(GUN, slot_belt) //equip_if_possible(new /obj/item/weapon/gun/energy/pulse_rifle(src), slot_l_hand) /*Commented out because Commandos now have their rifles spawn in front of them, along with operation manuals. Useful for copy pasta since I'm lazy.*/ diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm index 24fb8ad4e1..141a762cfa 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm @@ -189,7 +189,7 @@ if(!istype(U, /turf)) return - var/obj/bullet/neurodart/A = new /obj/bullet/neurodart(usr.loc) + var/obj/item/projectile/dart/A = new /obj/item/projectile/dart(usr.loc) A.current = U A.yo = U.y - T.y diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index d59013db16..a456ebb960 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -135,9 +135,8 @@ obj/item/weapon/robot_module/syndicate ..() src.modules += new /obj/item/weapon/baton(src) src.modules += new /obj/item/weapon/handcuffs(src) - src.modules += new /obj/item/weapon/gun/energy/taser_gun(src) - src.emag = new /obj/item/weapon/gun/energy/laser_gun(src) - src.emag:shot_delay = 7 + src.modules += new /obj/item/weapon/gun/energy/taser/cyborg(src) + src.emag = new /obj/item/weapon/gun/energy/laser/cyborg(src) /obj/item/weapon/robot_module/janitor/New() @@ -175,7 +174,7 @@ obj/item/weapon/robot_module/syndicate */ //Merged with Service borg, not a death, just a transformation obj/item/weapon/robot_module/syndicate/New() - src.modules += new /obj/item/weapon/gun/energy/crossbow(src) + src.modules += new /obj/item/weapon/gun/energy/crossbow/cyborg(src) src.modules += new /obj/item/weapon/card/emag(src) diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index bacf9a69ce..ef4e6e0644 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -85,7 +85,7 @@ src.fire_delay = rand(20,100) src.shot_number = 0 use_power(1000) - var/obj/beam/a_laser/A = new /obj/beam/a_laser( src.loc ) + var/obj/item/projectile/beam/A = new /obj/item/projectile/beam( src.loc ) A.icon_state = "u_laser" playsound(src.loc, 'emitter.ogg', 25, 1) if(prob(35)) diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index fa6777f0d6..ce47d8f39e 100644 Binary files a/icons/obj/ammo.dmi and b/icons/obj/ammo.dmi differ diff --git a/maps/tgstation.2.0.7.dmm b/maps/tgstation.2.0.7.dmm index 0ef9a185b5..199e8116c9 100644 --- a/maps/tgstation.2.0.7.dmm +++ b/maps/tgstation.2.0.7.dmm @@ -469,7 +469,7 @@ "aja" = (/turf/simulated/floor,/area/security/warden) "ajb" = (/obj/rack,/obj/item/weapon/baton,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet,/turf/simulated/floor,/area/security/warden) "ajc" = (/obj/machinery/atmospherics/pipe/simple,/obj/rack,/obj/item/weapon/shield/riot{pixel_x = 3; pixel_y = 3},/obj/item/weapon/shield/riot,/obj/item/weapon/shield/riot{pixel_x = -3; pixel_y = -3},/turf/simulated/floor,/area/security/warden) -"ajd" = (/obj/rack,/obj/item/weapon/gun/energy/laser_gun,/obj/item/weapon/gun/energy/general,/turf/simulated/floor,/area/security/warden) +"ajd" = (/obj/rack,/obj/item/weapon/gun/energy/laser,/turf/simulated/floor,/area/security/warden) "aje" = (/obj/rack,/obj/item/clothing/mask/gas/emergency{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas/emergency,/obj/item/clothing/mask/gas/emergency{pixel_x = -3; pixel_y = -3},/turf/simulated/floor,/area/security/warden) "ajf" = (/obj/machinery/atmospherics/pipe/simple{dir = 5},/turf/simulated/wall/r_wall,/area/security/hos) "ajg" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; frequency = 1439; icon_state = "off"; id_tag = null; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/secure_closet/hos,/turf/simulated/floor,/area/security/hos) @@ -716,7 +716,7 @@ "anN" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/security{name = "Security"; req_access = null; req_access_txt = "1"},/turf/simulated/floor,/area/security/brig) "anO" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; frequency = 1439; icon_state = "off"; id_tag = null; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/crew_quarters/courtroom) "anP" = (/obj/table/woodentable{dir = 2; icon_state = "woodentable2corner"},/obj/item/weapon/paper/Court,/turf/simulated/floor,/area/crew_quarters/courtroom) -"anQ" = (/obj/table/woodentable{dir = 1; icon_state = "woodentable2"; name = "wooden table"},/obj/item/weapon/gun/shotgun{desc = "It's kinda loud..."; name = "adjudicator"; shellsunlimited = 3},/turf/simulated/floor,/area/crew_quarters/courtroom) +"anQ" = (/obj/table/woodentable{dir = 1; icon_state = "woodentable2"; name = "wooden table"},/turf/simulated/floor,/area/crew_quarters/courtroom) "anR" = (/obj/table/woodentable{dir = 5; icon_state = "woodentable2"; name = "wooden table"},/obj/item/device/radio/intercom{broadcasting = 1; dir = 8; listening = 0; name = "Station Intercom (Court)"; pixel_x = 0},/turf/simulated/floor,/area/crew_quarters/courtroom) "anS" = (/obj/stool/chair{name = "Witness"},/obj/machinery/door/window/northleft{base_state = "right"; dir = 4; icon_state = "right"},/obj/window/reinforced,/obj/window/reinforced{dir = 1},/turf/simulated/floor,/area/crew_quarters/courtroom) "anT" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor,/area/crew_quarters/courtroom) @@ -1029,7 +1029,7 @@ "atO" = (/obj/grille,/obj/window/reinforced{dir = 8},/obj/window/reinforced{dir = 4},/obj/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/fpmaint) "atP" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/turf/simulated/wall,/area/security/detectives_office) "atQ" = (/obj/table/woodentable{dir = 9},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; frequency = 1439; icon_state = "off"; id_tag = null; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/light/small,/obj/item/weapon/camera_test{desc = "A one use - polaroid camera. 30 photos left."; name = "detectives camera"; pictures_left = 30},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) -"atR" = (/obj/table/woodentable{dir = 5},/obj/item/weapon/ammo/a38,/obj/item/weapon/ammo/a38,/obj/item/weapon/gun/detectiverevolver{bullets = 7},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) +"atR" = (/obj/table/woodentable{dir = 5},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "atS" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/obj/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "atT" = (/obj/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/machinery/computer/secure_data/detective_computer,/obj/machinery/camera{c_tag = "Detective's Office"; dir = 1},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "atU" = (/obj/machinery/computer/security/wooden_tv,/obj/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) @@ -3618,7 +3618,7 @@ "brD" = (/obj/device/piano{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) "brE" = (/obj/stool{pixel_y = 8},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) "brF" = (/obj/item/clothing/head/helmet/that{throwforce = 1; throwing = 1},/obj/table/reinforced{dir = 1},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) -"brG" = (/obj/table/reinforced{dir = 9; icon_state = "reinf_tabledir"},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/weapon/gun/shotgun,/obj/machinery/requests_console{department = "Bar"; departmentType = 2; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) +"brG" = (/obj/table/reinforced{dir = 9; icon_state = "reinf_tabledir"},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/requests_console{department = "Bar"; departmentType = 2; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) "brH" = (/obj/table{icon_state = "tabledir"; dir = 6},/obj/item/weapon/storage/utilitybelt/medical{pixel_x = -6; pixel_y = 8},/turf/simulated/floor{icon_state = "white"; dir = 8},/area/medical/medbay) "brI" = (/obj/table{icon_state = "table_vertical"; dir = 4},/obj/item/weapon/gun/syringe{pixel_y = 3},/obj/item/weapon/gun/syringe,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "brJ" = (/obj/secure_closet/medical1{pixel_x = 5},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/medical/medbay) @@ -5807,7 +5807,7 @@ "chI" = (/turf/unsimulated/floor{name = "plating"},/area) "chJ" = (/obj/landmark/start,/turf/space,/area) "chK" = (/obj/stool/chair{dir = 4},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) -"chL" = (/obj/table{icon_state = "tabledir"; dir = 9},/obj/item/weapon/ammo/a357,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"chL" = (/obj/table{icon_state = "tabledir"; dir = 9},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) "chM" = (/obj/securearea{name = "EXTERNAL AIRLOCK"; desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_station/start) "chN" = (/obj/machinery/door/poddoor{id = "syndicate"; name = "Outer Airlock"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) "chO" = (/obj/table{icon_state = "tabledir"; dir = 10},/obj/item/device/aicard,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) @@ -6171,7 +6171,7 @@ "coI" = (/obj/bookcase{name = "bookcase (Reports)"},/obj/bookcase{name = "bookcase (Tactics)"},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed) "coJ" = (/obj/secure_closet/hos,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed) "coK" = (/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed) -"coL" = (/obj/rack,/obj/item/weapon/secstorage/sbriefcase,/obj/item/weapon/cigpacket,/obj/item/weapon/zippo,/obj/item/weapon/gun/energy/pulse_rifle{icon_state = "m1911"; name = "M1911-P"},/obj/item/weapon/gun/shotgun/combat{shellsunlimited = 1; w_class = 2},/obj/item/weapon/storage/utilitybelt,/obj/item/weapon/storage/backpack/security,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed) +"coL" = (/obj/rack,/obj/item/weapon/secstorage/sbriefcase,/obj/item/weapon/cigpacket,/obj/item/weapon/zippo,/obj/item/weapon/gun/energy/pulse_rifle{icon_state = "m1911"; name = "M1911-P"},/obj/item/weapon/storage/utilitybelt,/obj/item/weapon/storage/backpack/security,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed) "coM" = (/obj/bookcase{name = "bookcase (Reports)"},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed) "coN" = (/obj/grille,/obj/window/reinforced,/obj/window/reinforced{dir = 4},/obj/window/reinforced{dir = 1},/turf/unsimulated/floor{name = "plating"},/area/centcom) "coO" = (/turf/unsimulated/floor{icon_state = "engine"},/area/centcom) @@ -6364,14 +6364,14 @@ "cst" = (/obj/machinery/igniter,/turf/simulated/floor,/area/tdome) "csu" = (/turf/simulated/floor,/area/tdome) "csv" = (/obj/disposalpipe/segment,/turf/simulated/floor,/area/tdome) -"csw" = (/obj/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/under/color/red,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/shoes/brown,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/head/helmet/thunderdome,/obj/item/weapon/baton,/obj/item/weapon/baton,/obj/item/weapon/baton,/obj/item/weapon/gun/energy/laser_gun,/obj/item/weapon/gun/energy/laser_gun,/obj/item/weapon/gun/energy/laser_gun,/obj/item/weapon/sword/red,/obj/item/weapon/sword/red,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"csw" = (/obj/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/under/color/red,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/shoes/brown,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/head/helmet/thunderdome,/obj/item/weapon/baton,/obj/item/weapon/baton,/obj/item/weapon/baton,/obj/item/weapon/sword/red,/obj/item/weapon/sword/red,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) "csx" = (/obj/machinery/door/poddoor{id = "thunderdomegen"; name = "General Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) "csy" = (/obj/landmark{name = "tdome2"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) "csz" = (/obj/machinery/door/poddoor{id = "thunderdome"; name = "Thunderdome Blast Door"},/turf/unsimulated/floor{name = "plating"},/area/tdome) "csA" = (/turf/simulated/floor{icon_state = "red"; dir = 8},/area/tdome) "csB" = (/turf/simulated/floor{icon_state = "green"; dir = 4},/area/tdome) "csC" = (/obj/landmark{name = "tdome1"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1) -"csD" = (/obj/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/under/color/green,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/shoes/brown,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/head/helmet/thunderdome,/obj/item/weapon/baton,/obj/item/weapon/baton,/obj/item/weapon/baton,/obj/item/weapon/gun/energy/laser_gun,/obj/item/weapon/gun/energy/laser_gun,/obj/item/weapon/gun/energy/laser_gun,/obj/item/weapon/sword/green,/obj/item/weapon/sword/green,/obj/item/weapon/sword/green,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"csD" = (/obj/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/under/color/green,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/shoes/brown,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/head/helmet/thunderdome,/obj/item/weapon/baton,/obj/item/weapon/baton,/obj/item/weapon/baton,/obj/item/weapon/sword/green,/obj/item/weapon/sword/green,/obj/item/weapon/sword/green,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) "csE" = (/obj/machinery/recharger{pixel_y = 4},/obj/landmark{name = "tdome2"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) "csF" = (/obj/machinery/recharger{pixel_y = 4},/obj/landmark{name = "tdome1"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1) "csG" = (/obj/machinery/camera{pixel_x = 11; pixel_y = -9; network = "thunder"; c_tag = "Red Team"},/obj/landmark{name = "tdome2"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) @@ -6387,10 +6387,10 @@ "csQ" = (/obj/machinery/atmospherics/pipe/simple{icon_state = "intact"; level = 2},/turf/simulated/floor,/area/tdome) "csR" = (/obj/machinery/door/poddoor{id = "thunderdomehea"; name = "Heavy Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) "csS" = (/turf/unsimulated/floor{icon_state = "redcorner"; dir = 8},/area/tdome) -"csT" = (/obj/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/under/color/red,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/shoes/brown,/obj/item/clothing/shoes/brown,/obj/item/weapon/gun/revolver,/obj/item/weapon/gun/revolver,/obj/item/weapon/gun/revolver,/obj/item/weapon/ammo/a357,/obj/item/weapon/ammo/a357,/obj/item/weapon/ammo/a357,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/clothing/head/helmet/swat,/obj/item/clothing/head/helmet/swat,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"csT" = (/obj/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/under/color/red,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/shoes/brown,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/clothing/head/helmet/swat,/obj/item/clothing/head/helmet/swat,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) "csU" = (/obj/machinery/door/airlock/command{name = "Thunderdome"},/turf/simulated/floor,/area/tdome) "csV" = (/obj/window/reinforced{dir = 5; health = 1e+007},/obj/forcefield{desc = "You can't get in. Heh."; layer = 1; name = "Blocker"},/obj/machinery/atmospherics/pipe/simple{icon_state = "intact"; level = 2},/turf/simulated/floor,/area/tdome) -"csW" = (/obj/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/under/color/green,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/shoes/brown,/obj/item/clothing/shoes/brown,/obj/item/weapon/gun/revolver,/obj/item/weapon/gun/revolver,/obj/item/weapon/gun/revolver,/obj/item/weapon/ammo/a357,/obj/item/weapon/ammo/a357,/obj/item/weapon/ammo/a357,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/clothing/head/helmet/swat,/obj/item/clothing/head/helmet/swat,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"csW" = (/obj/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/under/color/green,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/shoes/brown,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/clothing/head/helmet/swat,/obj/item/clothing/head/helmet/swat,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) "csX" = (/turf/unsimulated/floor{icon_state = "greencorner"},/area/tdome) "csY" = (/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "csZ" = (/obj/stool/chair{dir = 1},/obj/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) @@ -6409,8 +6409,8 @@ "ctm" = (/turf/unsimulated/floor{icon_state = "red"; dir = 9},/area/tdome) "ctn" = (/turf/unsimulated/floor{icon_state = "red"; dir = 1},/area/tdome) "cto" = (/turf/unsimulated/floor{icon_state = "red"; dir = 5},/area/tdome) -"ctp" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/machinery/recharger{pixel_y = 4},/obj/item/weapon/gun/energy/general,/obj/item/weapon/classic_baton,/obj/item/weapon/handcuffs,/obj/item/clothing/gloves/stungloves,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) -"ctq" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/machinery/recharger{pixel_y = 4},/obj/item/weapon/gun/energy/general,/obj/item/weapon/classic_baton,/obj/item/weapon/handcuffs,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) +"ctp" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/machinery/recharger{pixel_y = 4},/obj/item/weapon/gun/energy,/obj/item/weapon/classic_baton,/obj/item/weapon/handcuffs,/obj/item/clothing/gloves/stungloves,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) +"ctq" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/machinery/recharger{pixel_y = 4},/obj/item/weapon/classic_baton,/obj/item/weapon/handcuffs,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "ctr" = (/obj/table{dir = 5; icon_state = "tabledir"},/obj/item/weapon/chem_grenade/cleaner,/obj/item/weapon/chem_grenade/cleaner,/obj/item/weapon/chem_grenade/cleaner,/obj/item/weapon/chem_grenade/cleaner,/obj/item/weapon/chem_grenade/cleaner,/obj/item/weapon/chem_grenade/cleaner,/obj/item/weapon/chem_grenade/cleaner,/obj/item/weapon/chem_grenade/cleaner,/obj/item/weapon/chem_grenade/cleaner,/obj/item/weapon/chem_grenade/cleaner,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "cts" = (/obj/machinery/computer/pod{id = "thunderdomeaxe"; name = "Thunderdome Axe Supply"},/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "ctt" = (/obj/machinery/computer/pod{id = "thunderdomegen"; name = "Thunderdome General Supply"},/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) @@ -6450,12 +6450,12 @@ "cub" = (/obj/item/weapon/cloaking_device,/obj/item/clothing/glasses/thermal,/obj/window/reinforced,/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) "cuc" = (/obj/item/weapon/hand_tele,/obj/window/reinforced,/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) "cud" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/machinery/recharger{pixel_y = 4},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) -"cue" = (/obj/table{dir = 5; icon_state = "tabledir"},/obj/item/weapon/ammo/a357,/obj/item/weapon/ammo/a357,/obj/item/weapon/ammo/a357,/obj/item/weapon/ammo/a357,/obj/item/weapon/ammo/a357,/obj/item/weapon/ammo/a357,/obj/item/weapon/ammo/a357,/obj/item/weapon/ammo/a357,/obj/item/weapon/ammo/a357,/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) +"cue" = (/obj/table{dir = 5; icon_state = "tabledir"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) "cuf" = (/obj/item/weapon/rcd,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) "cug" = (/obj/reagent_dispensers/beerkeg,/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) "cuh" = (/obj/rack,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/under/color/red,/obj/item/clothing/under/color/red,/obj/item/clothing/under/color/red,/obj/item/clothing/under/color/red,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/shoes/brown,/obj/item/clothing/shoes/brown,/obj/item/clothing/shoes/brown,/obj/item/clothing/shoes/brown,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/head/helmet/thunderdome,/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) "cui" = (/obj/rack,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/under/color/green,/obj/item/clothing/under/color/green,/obj/item/clothing/under/color/green,/obj/item/clothing/under/color/green,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/shoes/brown,/obj/item/clothing/shoes/brown,/obj/item/clothing/shoes/brown,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/head/helmet/thunderdome,/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) -"cuj" = (/obj/table{dir = 9; icon_state = "tabledir"},/obj/item/weapon/axe,/obj/item/weapon/axe,/obj/item/weapon/axe,/obj/item/weapon/baton,/obj/item/weapon/baton,/obj/item/weapon/baton,/obj/item/weapon/gun/energy/laser_gun,/obj/item/weapon/gun/energy/laser_gun,/obj/item/weapon/gun/energy/laser_gun,/obj/item/weapon/gun/revolver,/obj/item/weapon/gun/revolver,/obj/item/weapon/gun/revolver,/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) +"cuj" = (/obj/table{dir = 9; icon_state = "tabledir"},/obj/item/weapon/axe,/obj/item/weapon/axe,/obj/item/weapon/axe,/obj/item/weapon/baton,/obj/item/weapon/baton,/obj/item/weapon/baton,/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) "cuk" = (/obj/table{dir = 5; icon_state = "tabledir"},/obj/item/weapon/bananapeel,/obj/item/weapon/bananapeel,/obj/item/weapon/bananapeel,/obj/item/weapon/bananapeel,/obj/item/weapon/bananapeel,/obj/item/weapon/card/emag,/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) "cul" = (/obj/crate/secure/weapon,/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) "cum" = (/turf/simulated/shuttle/wall{dir = 8; icon_state = "wall_space"},/area/derelict/ship) diff --git a/tgstation.dme b/tgstation.dme index adce7ff486..47efc6937b 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -130,6 +130,7 @@ #define FILE_DIR "icons/turf" #define FILE_DIR "interface" #define FILE_DIR "maps" +#define FILE_DIR "maps/backup" #define FILE_DIR "sound" #define FILE_DIR "sound/ambience" #define FILE_DIR "sound/announcer" @@ -462,7 +463,6 @@ #include "code\game\objects\bomb.dm" #include "code\game\objects\cleaner.dm" #include "code\game\objects\closets.dm" -#include "code\game\objects\death_commando_gear.dm" #include "code\game\objects\displaycase.dm" #include "code\game\objects\door_assembly.dm" #include "code\game\objects\effect_system.dm" @@ -553,7 +553,7 @@ #include "code\game\objects\items\weapons\explosives.dm" #include "code\game\objects\items\weapons\flamethrower.dm" #include "code\game\objects\items\weapons\grenades.dm" -#include "code\game\objects\items\weapons\guns_ammo.dm" +#include "code\game\objects\items\weapons\guns_new.dm" #include "code\game\objects\items\weapons\hydroponics.dm" #include "code\game\objects\items\weapons\implants.dm" #include "code\game\objects\items\weapons\kitchen.dm"