diff --git a/code/defines/obj.dm b/code/defines/obj.dm index a01101514ad..0a1882e5f90 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 e6b027aa282..acc4722c5ba 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 9a42e9f4bc4..2117a21e51c 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 fa0704e9d54..86f1fed15fc 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 bda996c6d24..dc793bdb5e2 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 a07793fbe32..6807c1e2b09 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 05bd4dc7f33..c69cdf855fc 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 1edf677c35e..908b9591e69 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 6c50fef85cc..ee7724c71f1 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 c33cf7cdd52..86827230427 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 244aaecccd1..50535fea188 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 791e4425d2f..e0f6d078edc 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 094aac09b6f..6e801461cf2 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 56755ddfcce..d74515ad58a 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 4e5881c4ce6..d862a25ae26 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 db59adb532a..c668d887a8e 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 c102319f388..f91bfbd05a4 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 edfcfc82175..2f82faf1c7a 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 160789c983a..bb705db7d7d 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 b0e41e69d3f..b9e44f5155b 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 8631cf60bc9..fb0dccca6fc 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 abc68602e48..00000000000 --- 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 aa3bb688fc2..6349418e350 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 3dfabfc3789..4a04e0921c6 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 e8827219efc..78d77e49fe6 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 87bd2384370..00000000000 --- 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 00000000000..f1aaefb5d49 --- /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 35706b34afd..6d12a3028e9 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 c3ed7de00b4..764f3bf3a5f 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 3949107bd93..ca5941a74ae 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 af59727e4b8..059c03b5ede 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 97c567ba6ff..96e8b2e0428 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 51e96553ff3..df610de59ef 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 32efb0b787e..4d3b46c7d70 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 d17301330da..8e74cd1b34b 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 24fb8ad4e1d..141a762cfab 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 d59013db164..a456ebb960f 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 bacf9a69ce7..ef4e6e0644a 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 fa6777f0d6c..ce47d8f39ea 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 0ef9a185b59..199e8116c90 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 adce7ff486b..47efc6937b6 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"