Files
CHOMPStation2/code/modules/projectiles/gun.dm
vageyenaman@gmail.com c8452fa96b ◦ When equipping corgis with objects, their icons immediately update. Fixes a bit of visual lag.
◦ The kitchen and booze vending machines have some changed commodity values. Most importantly, kitchen has more eating utensils and trays.
◦ Changed the afterattack() and DblClick() to have the (location,control,params) parameters.
◦ Added a new radio filter, "RADIO_MAGNETS".
◦ Mucked around with /datum/signal. Just an extra variable and another comment.
◦ Guns' afterattack() proc now carries location,control,params.
◦ Projectiles now track exactly where the player clicked on a tile. Pretty neat, huh?


New stuff:
   ◦ A new machine has been added: magnetic generators. They fit under floor tiles and can create dyanmic magnetic fields by directing ionized proton/electron beams to another tile.
   ◦ Another machine/computer was added that can control these magnetic generators. These machines come with their own pseudo-scripting engine for directing the magnetic beams magnetic modules create. They're not really complete yet, but they work for the firing range. I plan on expanding on this maybe sometime in the future, creating more applications for magnets elsewhere.
   ◦ Firing range things have been added, including target stakes and targets (both sprited by Veyveyr). You can mount targets onto target stakes and shoot them. Pixel-precision aiming has been applied to the targets (ONLY THE TARGETS!) so that you can see where you shot it and whatnot. You can literally blow holes through the targets until they collapse on themselves.
   ◦ Added a small little manual to the firing range on how to use the new stuff. It hopefully isn't too complicated to use.


    

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2543 316c924e-a436-60f5-8080-3fe189b3f50e
2011-11-23 02:00:18 +00:00

114 lines
2.8 KiB
Plaintext

/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 = 3.0
throwforce = 5
throw_speed = 4
throw_range = 5
force = 5.0
origin_tech = "combat=1"
var
fire_sound = 'Gunshot.ogg'
obj/item/projectile/in_chamber = null
caliber = ""
silenced = 0
recoil = 0
proc
load_into_chamber()
special_check(var/mob/M)
load_into_chamber()
return 0
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, flag, params)//TODO: go over this
if(flag) return //we're placing gun on a table or in backpack
if(istype(target, /obj/machinery/recharger) && istype(src, /obj/item/weapon/gun/energy)) return//Shouldnt flag take care of this?
if(istype(user, /mob/living))
var/mob/living/M = user
if ((M.mutations & CLUMSY) && 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 (!user.IsAdvancedToolUser())
user << "\red You don't have the dexterity to do this!"
return
add_fingerprint(user)
var/turf/curloc = user.loc
var/turf/targloc = get_turf(target)
if (!istype(targloc) || !istype(curloc))
return
if(!special_check(user)) return
if(!load_into_chamber())
user << "\red *click*";
return
if(!in_chamber) return
in_chamber.firer = user
in_chamber.def_zone = user.zone_sel.selecting
if(targloc == curloc)
user.bullet_act(in_chamber)
del(in_chamber)
update_icon()
return
if(recoil)
spawn()
shake_camera(user, recoil + 1, recoil)
if(silenced)
playsound(user, fire_sound, 10, 1)
else
playsound(user, fire_sound, 50, 1)
user.visible_message("\red [user.name] fires the [src.name]!", "\red You fire the [src.name]!", "\blue You hear a [istype(in_chamber, /obj/item/projectile/beam) ? "laser blast" : "gunshot"]!")
in_chamber.original = targloc
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
if(params)
var/list/mouse_control = params2list(params)
if(mouse_control["icon-x"])
in_chamber.p_x = text2num(mouse_control["icon-x"])
if(mouse_control["icon-y"])
in_chamber.p_y = text2num(mouse_control["icon-y"])
spawn()
if(in_chamber) in_chamber.process()
sleep(1)
in_chamber = null
update_icon()
return