Merge branch 'master' of github.com:Baystation12/Baystation12

This commit is contained in:
Hawk-v3
2012-03-02 19:07:44 +00:00
62 changed files with 4654 additions and 2622 deletions

View File

@@ -1,5 +1,5 @@
/obj/item/weapon/gun
name = "gun"
name = "\improper Gun"
desc = "Its a gun. It's pretty terrible, though."
icon = 'gun.dmi'
icon_state = "detective"
@@ -19,6 +19,9 @@
caliber = ""
silenced = 0
recoil = 0
tmp/mob/target
tmp/lock_time = -100
mouthshoot = 0
proc
load_into_chamber()
@@ -28,6 +31,14 @@
load_into_chamber()
return 0
//Removing the lock and the buttons.
dropped(mob/user as mob)
if(target)
target.NotTargeted(src)
del(user.item_use_icon)
del(user.gun_move_icon)
del(user.gun_run_icon)
return ..()
special_check(var/mob/M) //Placeholder for any special checks, like detective's revolver.
return 1
@@ -37,8 +48,18 @@
for(var/obj/O in contents)
O.emp_act(severity)
//Handling lowering yer gun.
attack_self()
if(target)
target.NotTargeted(src)
usr.visible_message("[usr] lowers \the [src].")
return 0
return 1
//Suiciding.
attack(mob/living/M as mob, mob/living/user as mob, def_zone)
if (M == user && user.zone_sel.selecting == "mouth" && load_into_chamber())
if (M == user && user.zone_sel.selecting == "mouth" && load_into_chamber() && !mouthshoot)
mouthshoot = 1
M.visible_message("\red [user] sticks their gun in their mouth, ready to pull the trigger...")
if(!do_after(user, 40))
M.visible_message("\blue [user] decided life was worth living")
@@ -59,18 +80,20 @@
M.apply_damage(85, BRUTE, "chest")
M.visible_message("\red [user] pulls the trigger. Ow.")
del(src.in_chamber)
mouthshoot = 0
return
else if(target && M == target)
PreFire(M,user)
else
return ..()
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?
//POWPOW!... Used to be afterattack.
proc/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params)//TODO: go over 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 << "\red \the [src] blows up in your face."
M.take_organ_damage(0,20)
M.drop_item()
del(src)
@@ -113,7 +136,7 @@
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"]!")
user.visible_message("\red [user] fires the [src]!", "\red You fire the [src]!", "\blue You hear a [istype(in_chamber, /obj/item/projectile/beam) ? "laser blast" : "gunshot"]!")
in_chamber.original = targloc
in_chamber.loc = get_turf(user)
@@ -138,3 +161,281 @@
update_icon()
return
//Aiming at the target mob.
proc/Aim(var/mob/M)
if(target != M)
lock_time = world.time
if(target)
//usr.ClearRequest("Aim")
target.NotTargeted(src)
usr.visible_message("[usr] turns \the [src] on [M]!")
else
usr.visible_message("[usr] aims \a [src] at [M]!")
for(var/mob/K in viewers(usr))
K << 'TargetOn.ogg'
M.Targeted(src)
//HE MOVED, SHOOT HIM!
proc/TargetActed()
var/mob/M = loc
if(target == M) return
usr.last_move_intent = world.time
Fire(target,usr)
var/dir_to_fire = sd_get_approx_dir(M,target)
if(dir_to_fire != M.dir)
M.dir = dir_to_fire
afterattack(atom/A as mob|obj|turf|area, mob/living/user as mob|obj, flag, params)
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?
PreFire(A,user,params)
//Compute how to fire.....
proc/PreFire(atom/A as mob|obj|turf|area, mob/living/user as mob|obj, params)
if(usr.a_intent in list("help","grab","disarm"))
//GraphicTrace(usr.x,usr.y,A.x,A.y,usr.z)
if(lock_time > world.time - 2) return
if(!ismob(A))
// var/mob/M = locate() in range(0,A)
// if(M && !ismob(A))
// if(M.type == /mob)
// return FindTarget(M,user,params)
var/mob/M = GunTrace(usr.x,usr.y,A.x,A.y,usr.z,usr)
if(M && ismob(M) && !target)
Aim(M)
return
if(ismob(A) && target != A)
Aim(A)
else if(lock_time < world.time + 10)
Fire(A,user,params)
else if(!target)
Fire(A,user,params)
//else
//var/item/gun/G = usr.OHand
//if(!G)
//Fire(A,0)
//else if(istype(G))
//G.Fire(A,3)
//Fire(A,2)
//else
//Fire(A)
var/dir_to_fire = sd_get_approx_dir(usr,A)
if(dir_to_fire != usr.dir)
usr.dir = dir_to_fire
else
Fire(A, user)
//Yay, math!
#define SIGN(X) ((X<0)?-1:1)
proc/GunTrace(X1,Y1,X2,Y2,Z=1,exc_obj,PX1=16,PY1=16,PX2=16,PY2=16)
//bluh << "Tracin' [X1],[Y1] to [X2],[Y2] on floor [Z]."
var/turf/T
var/mob/M
if(X1==X2)
if(Y1==Y2) return 0 //Light cannot be blocked on same tile
else
var/s = SIGN(Y2-Y1)
Y1+=s
while(1)
T = locate(X1,Y1,Z)
if(!T) return 0
M = locate() in T
if(M) return M
M = locate() in orange(1,T)-exc_obj
if(M) return M
Y1+=s
else
var
m=(32*(Y2-Y1)+(PY2-PY1))/(32*(X2-X1)+(PX2-PX1))
b=(Y1+PY1/32-0.015625)-m*(X1+PX1/32-0.015625) //In tiles
signX = SIGN(X2-X1)
signY = SIGN(Y2-Y1)
if(X1<X2) b+=m
while(1)
var/xvert = round(m*X1+b-Y1)
if(xvert) Y1+=signY //Line exits tile vertically
else X1+=signX //Line exits tile horizontally
T = locate(X1,Y1,Z)
if(!T) return 0
M = locate() in T
if(M) return M
M = locate() in orange(1,T)-exc_obj
if(M) return M
return 0
//Targeting management procs
mob/var
list/targeted_by
target_time = -100
last_move_intent = -100
last_target_click = -5
obj/effect/target_locked/target_locked = null
mob/proc
Targeted(var/obj/item/weapon/gun/I)
if(!targeted_by) targeted_by = list()
targeted_by += I
I.target = src
//I.lock_time = world.time + 10 //Target has 1 second to realize they're targeted and stop (or target the opponent).
src << "((\red <b>Your character is being targeted. They have 1 second to stop any click or move actions.</b> \black While targeted, they may \
drag and drop items in or into the map, speak, and click on interface buttons. Clicking on the map, their items \
(other than a weapon to de-target), or moving will result in being fired upon. \red The aggressor may also fire manually, \
so try not to get on their bad side.\black ))"
if(targeted_by.len == 1)
spawn(0)
target_locked = new /obj/effect/target_locked(src)
overlays += target_locked
spawn flick("locking",target_locked)
var/mob/T = I.loc
//Adding the buttons to the controler person
if(T)
T.item_use_icon = new /obj/screen/gun/item(null)
T.gun_move_icon = new /obj/screen/gun/move(null)
if(T.client)
T.client.screen += T.item_use_icon
T.client.screen += T.gun_move_icon
while(targeted_by)
sleep(1)
if(last_move_intent > I.lock_time + 10 && !T.target_can_move) //If the target moved while targeted
I.TargetActed()
I.lock_time = world.time + 5
else if(last_move_intent > I.lock_time + 10 && !T.target_can_run && m_intent == "run") //If the target ran while targeted
I.TargetActed()
I.lock_time = world.time + 5
if(last_target_click > I.lock_time + 10 && !T.target_can_click) //If the target clicked the map to pick something up/shoot/etc
I.TargetActed()
I.lock_time = world.time + 5
NotTargeted(var/obj/item/weapon/gun/I,silent)
if(!silent)
for(var/mob/M in viewers(src))
M << 'TargetOff.ogg'
del(target_locked)
targeted_by -= I
update_clothing()
I.target = null
var/mob/T = I.loc
if(T && ismob(T))
del(T.item_use_icon)
del(T.gun_move_icon)
del(T.gun_run_icon)
if(!targeted_by.len) del targeted_by
/* Captive(var/obj/item/weapon/gun/I)
Sound(src,'CounterAttack.ogg')
if(!targeted_by) targeted_by = list()
targeted_by += I
I.target = src
// Stun("Captive")
I.lock_time = world.time + 10 //Target has 1 second to realize they're targeted and stop (or target the opponent).
src << "(Your character is being held captive. They have 1 second to stop any click or move actions. While held, they may \
drag and drop items in or into the map, speak, and click on interface buttons. Clicking on the map or their items \
(other than a weapon to de-target) will result in being attacked. The aggressor may also attack manually, \
so try not to get on their bad side.)"
if(targeted_by.len == 1)
var/mob/T = I.loc
while(targeted_by)
sleep(1)
if(last_target_click > I.lock_time + 10 && !T.target_can_click) //If the target clicked the map to pick something up/shoot/etc
I.TargetActed()
NotCaptive(var/obj/item/weapon/gun/I,silent)
if(!silent) Sound(src,'SwordSheath.ogg')
// UnStun("Captive")
targeted_by -= I
I.target = null
if(!targeted_by.len) del targeted_by*/
//Used to overlay the awesome stuff
/obj/effect
// target_locking
// icon = 'icons/effects/Targeted.dmi'
// icon_state = "locking"
// layer = 99
target_locked
icon = 'icons/effects/Targeted.dmi'
icon_state = "locked"
layer = 99
// captured
// icon = 'Captured.dmi'
// layer = 99
//If you move out of range, it isn't going to still stay locked on you any more.
mob/var
target_can_move = 0
target_can_run = 0
target_can_click = 0
mob/Move()
. = ..()
for(var/obj/item/weapon/gun/G in targeted_by)
var/mob/M = G.loc
if(!(M in view(src)))
//ClearRequest("Aim")
NotTargeted(G)
for(var/obj/item/weapon/gun/G in src)
if(G.target)
if(!(G.target in view(src)))
//ClearRequest("Aim")
G.target.NotTargeted(G)
mob/verb
//These are called by the on-screen buttons, adjusting what the victim can and cannot do.
AllowTargetMove()
set hidden=1
spawn(1) target_can_move = !target_can_move
if(!target_can_move)
// winset(usr,"default.target_can_move","is-flat=true;border=sunken")
usr << "Target may now walk."
gun_run_icon = new /obj/screen/gun/run(null)
if(client)
client.screen += gun_run_icon
else
// winset(usr,"default.target_can_move","is-flat=false;border=none")
usr << "Target may no longer move."
target_can_run = 0
del(gun_run_icon)
for(var/obj/item/weapon/gun/G in src)
G.lock_time = world.time + 5
if(G.target)
if(!target_can_move)
G.target << "Your character may now <b>walk</b> at the discretion of their targeter."
else
G.target << "\red <b>Your character will now be shot if they move.</b>"
AllowTargetRun()
set hidden=1
spawn(1) target_can_run = !target_can_run
if(!target_can_run)
// winset(usr,"default.target_can_move","is-flat=true;border=sunken")
usr << "Target may now run."
else
// winset(usr,"default.target_can_move","is-flat=false;border=none")
usr << "Target may no longer run."
for(var/obj/item/weapon/gun/G in src)
G.lock_time = world.time + 5
if(G.target)
if(!target_can_run)
G.target << "Your character may now <b>run</b> at the discretion of their targeter."
else
G.target << "\red <b>Your character will now be shot if they run.</b>"
AllowTargetClick()
set hidden=1
spawn(1) target_can_click = !target_can_click
if(!target_can_click)
// winset(usr,"default.target_can_click","is-flat=true;border=sunken")
usr << "Target may now use items."
else
// winset(usr,"default.target_can_click","is-flat=false;border=none")
usr << "Target may no longer use items."
for(var/obj/item/weapon/gun/G in src)
G.lock_time = world.time + 5
if(G.target)
if(!target_can_click)
G.target << "Your character may now <b>use items</b> at the discretion of their targeter."
else
G.target << "\red <b>Your character will now be shot if they use items.</b>"

View File

@@ -1,6 +1,6 @@
/obj/item/weapon/gun/energy
icon_state = "energy"
name = "energy gun"
name = "\improper Energy gun"
desc = "A basic energy-based gun with two settings: Stun and kill."
fire_sound = 'Taser.ogg'

View File

@@ -1,5 +1,5 @@
/obj/item/weapon/gun/energy/laser
name = "laser gun"
name = "\improper Laser Gun"
desc = "a basic weapon designed kill with concentrated energy bolts"
icon_state = "laser"
item_state = "laser"
@@ -11,7 +11,7 @@
obj/item/weapon/gun/energy/laser/retro
name ="retro laser"
name ="\improper Retro Laser"
icon_state = "retro"
desc = "An older model of the basic lasergun, no longer used by Nanotrasen's security or military forces. Nevertheless, it is still quite deadly and easy to maintain, making it a favorite amongst pirates and other outlaws."
@@ -58,7 +58,7 @@ obj/item/weapon/gun/energy/laser/retro
/obj/item/weapon/gun/energy/lasercannon
name = "laser cannon"
name = "\improper Laser Cannon"
desc = "With the L.A.S.E.R. cannon, the lasing medium is enclosed in a tube lined with uranium-235 and subjected to high neutron flux in a nuclear reactor core. This incredible technology may help YOU achieve high excitation rates with small laser volumes!"
icon_state = "lasercannon"
fire_sound = 'lasercannonfire.ogg'

View File

@@ -1,6 +1,6 @@
/obj/item/weapon/gun/energy/gun
icon_state = "energy"
name = "energy gun"
name = "\improper Energy Gun"
desc = "A basic energy-based gun with two settings: Stun and kill."
fire_sound = 'Taser.ogg'
@@ -13,26 +13,27 @@
attack_self(mob/living/user as mob)
switch(mode)
if(0)
mode = 1
charge_cost = 100
fire_sound = 'Laser.ogg'
user << "\red [src.name] is now set to kill."
projectile_type = "/obj/item/projectile/beam"
if(1)
mode = 0
charge_cost = 100
fire_sound = 'Taser.ogg'
user << "\red [src.name] is now set to stun."
projectile_type = "/obj/item/projectile/energy/electrode"
update_icon()
if(..())
switch(mode)
if(0)
mode = 1
charge_cost = 100
fire_sound = 'Laser.ogg'
user << "\red [src] is now set to kill."
projectile_type = "/obj/item/projectile/beam"
if(1)
mode = 0
charge_cost = 100
fire_sound = 'Taser.ogg'
user << "\red [src] is now set to stun."
projectile_type = "/obj/item/projectile/energy/electrode"
update_icon()
return
/obj/item/weapon/gun/energy/gun/nuclear
name = "Advanced Energy Gun"
name = "\improper Advanced Energy Gun"
desc = "An energy gun with an experimental miniaturized reactor."
origin_tech = "combat=3;materials=5;powerstorage=3"
var/lightfail = 0

View File

@@ -1,5 +1,5 @@
/obj/item/weapon/gun/energy/pulse_rifle
name = "pulse rifle"
name = "\improper Pulse Rifle"
desc = "A heavy-duty, pulse-based energy weapon, preferred by front-line combat personnel."
icon_state = "pulse"
force = 10
@@ -11,40 +11,42 @@
attack_self(mob/living/user as mob)
switch(mode)
if(2)
mode = 0
charge_cost = 100
fire_sound = 'Taser.ogg'
user << "\red [src.name] is now set to stun."
projectile_type = "/obj/item/projectile/energy/electrode"
if(0)
mode = 1
charge_cost = 100
fire_sound = 'Laser.ogg'
user << "\red [src.name] is now set to kill."
projectile_type = "/obj/item/projectile/beam"
if(1)
mode = 2
charge_cost = 200
fire_sound = 'pulse.ogg'
user << "\red [src.name] is now set to DESTROY."
projectile_type = "/obj/item/projectile/beam/pulse"
if(..())
switch(mode)
if(2)
mode = 0
charge_cost = 100
fire_sound = 'Taser.ogg'
user << "\red [src] is now set to stun."
projectile_type = "/obj/item/projectile/energy/electrode"
if(0)
mode = 1
charge_cost = 100
fire_sound = 'Laser.ogg'
user << "\red [src] is now set to kill."
projectile_type = "/obj/item/projectile/beam"
if(1)
mode = 2
charge_cost = 200
fire_sound = 'pulse.ogg'
user << "\red [src] is now set to DESTROY."
projectile_type = "/obj/item/projectile/beam/pulse"
return
/obj/item/weapon/gun/energy/pulse_rifle/destroyer
name = "pulse destroyer"
name = "\improper Pulse Destroyer"
desc = "A heavy-duty, pulse-based energy weapon."
cell_type = "/obj/item/weapon/cell/infinite"
attack_self(mob/living/user as mob)
user << "\red [src.name] has three settings, and they are all DESTROY."
if(..())
user << "\red [src] has three settings, and they are all DESTROY."
/obj/item/weapon/gun/energy/pulse_rifle/M1911
name = "m1911-P"
name = "\improper M1911-P"
desc = "It's not the size of the gun, it's the size of the hole it puts through people."
icon_state = "m1911-p"
cell_type = "/obj/item/weapon/cell/infinite"

View File

@@ -1,5 +1,5 @@
/obj/item/weapon/gun/energy/ionrifle
name = "ion rifle"
name = "\improper Ion Rifle"
desc = "A man portable anti-armor weapon designed to disable mechanical threats"
icon_state = "ionrifle"
fire_sound = 'Laser.ogg'
@@ -12,7 +12,7 @@
/obj/item/weapon/gun/energy/decloner
name = "biological demolecularisor"
name = "\improper Biological Demolecularisor"
desc = "A gun that discharges high amounts of controlled radiation to slowly break a target into component elements."
icon_state = "decloner"
fire_sound = 'pulse3.ogg'
@@ -21,7 +21,7 @@
projectile_type = "/obj/item/projectile/energy/declone"
obj/item/weapon/gun/energy/staff
name = "staff of change"
name = "\improper Staff of Change"
desc = "an artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself"
icon = 'gun.dmi'
icon_state = "staffofchange"

View File

@@ -1,6 +1,6 @@
/obj/item/weapon/gun/energy/taser
name = "taser gun"
name = "\improper Taser Gun"
desc = "A small, low capacity gun used for non-lethal takedowns."
icon_state = "taser"
fire_sound = 'Taser.ogg'
@@ -24,7 +24,7 @@
/obj/item/weapon/gun/energy/stunrevolver
name = "stun revolver"
name = "\improper Stun Revolver"
desc = "A high-tech revolver that fires stun cartridges. The stun cartridges can be recharged using a conventional energy weapon recharger."
icon_state = "stunrevolver"
fire_sound = 'Gunshot.ogg'
@@ -36,7 +36,7 @@
/obj/item/weapon/gun/energy/crossbow
name = "mini energy-crossbow"
name = "\improper Mini Energy-Crossbow"
desc = "A weapon favored by many of the syndicates stealth specialists."
icon_state = "crossbow"
w_class = 2.0
@@ -75,7 +75,7 @@
/obj/item/weapon/gun/energy/crossbow/largecrossbow
name = "Energy Crossbow"
name = "\improper Energy Crossbow"
desc = "A weapon favored by syndicate infiltration teams."
w_class = 4.0
force = 10

View File

@@ -1,5 +1,5 @@
/obj/item/weapon/gun/energy/temperature
name = "temperature gun"
name = "\improper Temperature Gun"
icon_state = "freezegun"
fire_sound = 'pulse3.ogg'
desc = "A gun that changes temperatures."
@@ -23,20 +23,21 @@
attack_self(mob/living/user as mob)
user.machine = src
var/temp_text = ""
if(temperature > (T0C - 50))
temp_text = "<FONT color=black>[temperature] ([round(temperature-T0C)]&deg;C) ([round(temperature*1.8-459.67)]&deg;F)</FONT>"
else
temp_text = "<FONT color=blue>[temperature] ([round(temperature-T0C)]&deg;C) ([round(temperature*1.8-459.67)]&deg;F)</FONT>"
if(..())
user.machine = src
var/temp_text = ""
if(temperature > (T0C - 50))
temp_text = "<FONT color=black>[temperature] ([round(temperature-T0C)]&deg;C) ([round(temperature*1.8-459.67)]&deg;F)</FONT>"
else
temp_text = "<FONT color=blue>[temperature] ([round(temperature-T0C)]&deg;C) ([round(temperature*1.8-459.67)]&deg;F)</FONT>"
var/dat = {"<B>Freeze Gun Configuration: </B><BR>
Current output temperature: [temp_text]<BR>
Target output temperature: <A href='?src=\ref[src];temp=-100'>-</A> <A href='?src=\ref[src];temp=-10'>-</A> <A href='?src=\ref[src];temp=-1'>-</A> [current_temperature] <A href='?src=\ref[src];temp=1'>+</A> <A href='?src=\ref[src];temp=10'>+</A> <A href='?src=\ref[src];temp=100'>+</A><BR>
"}
var/dat = {"<B>Freeze Gun Configuration: </B><BR>
Current output temperature: [temp_text]<BR>
Target output temperature: <A href='?src=\ref[src];temp=-100'>-</A> <A href='?src=\ref[src];temp=-10'>-</A> <A href='?src=\ref[src];temp=-1'>-</A> [current_temperature] <A href='?src=\ref[src];temp=1'>+</A> <A href='?src=\ref[src];temp=10'>+</A> <A href='?src=\ref[src];temp=100'>+</A><BR>
"}
user << browse(dat, "window=freezegun;size=450x300")
onclose(user, "freezegun")
user << browse(dat, "window=freezegun;size=450x300")
onclose(user, "freezegun")
Topic(href, href_list)

View File

@@ -1,6 +1,6 @@
/obj/item/weapon/gun/projectile
desc = "A classic revolver. Uses 357 ammo"
name = "revolver"
name = "\improper Revolver"
icon_state = "revolver"
caliber = "357"
origin_tech = "combat=2;materials=2"

View File

@@ -1,5 +1,5 @@
/obj/item/weapon/gun/projectile/automatic //Hopefully someone will find a way to make these fire in bursts or something. --Superxpdude
name = "Submachine Gun"
name = "\improper Submachine Gun"
desc = "A lightweight, fast firing gun. Uses 9mm rounds."
icon_state = "saber"
w_class = 3.0
@@ -11,7 +11,7 @@
/obj/item/weapon/gun/projectile/automatic/mini_uzi
name = "Mini-Uzi"
name = "\improper Mini-Uzi"
desc = "A lightweight, fast firing gun, for when you want someone dead. Uses .45 rounds."
icon_state = "mini-uzi"
w_class = 3.0
@@ -23,7 +23,7 @@
/obj/item/weapon/gun/projectile/automatic/c20r
name = "C-20r SMG"
name = "\improper C-20r SMG"
desc = "A lightweight, fast firing gun, for when you REALLY need someone dead. Uses 12mm rounds. Has a 'Scarborough Arms - Per falcis, per pravitas' buttstamp"
icon_state = "c20r"
item_state = "c20r"

View File

@@ -1,5 +1,5 @@
/obj/item/weapon/gun/projectile/silenced
name = "Silenced Pistol"
name = "\improper Silenced Pistol"
desc = "A small, quiet, easily concealable gun. Uses .45 rounds."
icon_state = "silenced_pistol"
w_class = 3.0
@@ -12,7 +12,7 @@
/obj/item/weapon/gun/projectile/deagle
name = "Desert Eagle"
name = "\improper Desert Eagle"
desc = "A robust handgun that uses 357 magnum ammo"
icon_state = "deagle"
force = 14.0
@@ -21,7 +21,7 @@
/obj/item/weapon/gun/projectile/deagle/gold
name = "Desert Eagle"
name = "\improper Desert Eagle"
desc = "A gold plated gun folded over a million times by superior martian gunsmiths. Uses 357 ammo."
icon_state = "deagleg"
item_state = "deagleg"
@@ -29,7 +29,7 @@
/obj/item/weapon/gun/projectile/deagle/camo
name = "Desert Eagle"
name = "\improper Desert Eagle"
desc = "A Deagle brand Deagle for operators operating operationally. Uses 357 ammo."
icon_state = "deaglecamo"
item_state = "deagleg"
@@ -37,7 +37,7 @@
/obj/item/weapon/gun/projectile/gyropistol
name = "Gyrojet Pistol"
name = "\improper Gyrojet Pistol"
desc = "A bulky pistol designed to fire self propelled rounds"
icon_state = "gyropistol"
max_shells = 8

View File

@@ -1,6 +1,6 @@
/obj/item/weapon/gun/projectile/detective
desc = "A cheap Martian knock-off of a Smith & Wesson Model 10. Uses .38-Special rounds."
name = "revolver"
name = "\improper Revolver"
icon_state = "detective"
caliber = "38"
origin_tech = "combat=2;materials=2"
@@ -18,7 +18,7 @@
verb/rename_gun()
set name = "Name Gun"
set desc = "Click to rename your gun. If you're the detective."
set desc = "Click to rename your gun."
var/mob/M = usr
if(!M.mind) return 0
@@ -38,7 +38,7 @@
/obj/item/weapon/gun/projectile/mateba
name = "mateba"
name = "\improper Mateba"
desc = "When you absolutely, positively need a 10mm hole in the other guy. Uses .357 ammo."
icon_state = "mateba"
origin_tech = "combat=2;materials=2"

View File

@@ -1,5 +1,5 @@
/obj/item/weapon/gun/projectile/shotgun
name = "shotgun"
name = "\improper Shotgun"
desc = "Useful for sweeping alleys."
icon_state = "shotgun"
max_shells = 2
@@ -21,11 +21,12 @@
attack_self(mob/living/user as mob)
if(recentpump) return
pump()
recentpump = 1
spawn(10)
recentpump = 0
if(..())
if(recentpump) return
pump()
recentpump = 1
spawn(10)
recentpump = 0
return
@@ -48,7 +49,7 @@
/obj/item/weapon/gun/projectile/shotgun/combat
name = "combat shotgun"
name = "\improper Combat Shotgun"
icon_state = "cshotgun"
max_shells = 8
ammo_type = "/obj/item/ammo_casing/shotgun"
@@ -56,7 +57,7 @@
/obj/item/weapon/gun/projectile/shotgun/combat2
name = "security combat shotgun"
name = "\improper Security Combat Shotgun"
icon_state = "cshotgun"
max_shells = 4

View File

@@ -10,7 +10,7 @@
*/
/obj/item/projectile
name = "projectile"
name = "\improper Projectile"
icon = 'projectiles.dmi'
icon_state = "bullet"
density = 1
@@ -70,7 +70,7 @@
return // nope.avi
if(!silenced)
visible_message("\red [A.name] is hit by the [src.name]!")//X has fired Y is now given by the guns so you cant tell who shot you if you could not see the shooter
visible_message("\red [A] is hit by the [src]!")//X has fired Y is now given by the guns so you cant tell who shot you if you could not see the shooter
else
M << "\red You've been shot!"
if(istype(firer, /mob))

View File

@@ -1,5 +1,5 @@
/obj/item/projectile/beam
name = "laser"
name = "\improper Laser"
icon_state = "laser"
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
damage = 20
@@ -49,19 +49,19 @@
del(src)
/obj/item/projectile/beam/heavylaser
name = "heavy laser"
name = "\improper Heavy Laser"
icon_state = "heavylaser"
damage = 40
/obj/item/projectile/beam/pulse
name = "pulse"
name = "\improper Pulse"
icon_state = "u_laser"
damage = 50
/obj/item/projectile/beam/deathlaser
name = "death laser"
name = "\improper Death Laser"
icon_state = "heavylaser"
damage = 60

View File

@@ -1,5 +1,5 @@
/obj/item/projectile/bullet
name = "bullet"
name = "\improper Bullet"
icon_state = "bullet"
damage = 60
damage_type = BRUTE
@@ -20,24 +20,24 @@
eyeblur = 3
/obj/item/projectile/bullet/suffocationbullet//How does this even work?
name = "co bullet"
// name = "\improper ullet"
damage = 20
damage_type = OXY
/obj/item/projectile/bullet/cyanideround
name = "poison bullet"
name = "\improper Poison Bullet"
damage = 40
damage_type = TOX
/obj/item/projectile/bullet/burstbullet//I think this one needs something for the on hit
name = "exploding bullet"
name = "\improper Exploding Bullet"
damage = 20
/obj/item/projectile/bullet/stunshot
name = "stunshot"
name = "\improper Stunshot"
damage = 5
stun = 10
weaken = 10

View File

@@ -1,5 +1,5 @@
/obj/item/projectile/change
name = "bolt of change"
name = "\improper Bolt of Change"
icon_state = "ice_1"
damage = 0
damage_type = BURN

View File

@@ -1,5 +1,5 @@
/obj/item/projectile/energy
name = "energy"
name = "\improper Energy"
icon_state = "spark"
damage = 0
damage_type = BURN
@@ -7,17 +7,17 @@
/obj/item/projectile/energy/electrode
name = "electrode"
name = "\improper Electrode"
icon_state = "spark"
nodamage = 1
stun = 10
weaken = 10
stun = 15
weaken = 15
stutter = 10
flag = "melee" //Give it a better chance to be blocked.
flag = "laser" //Give it a better chance to be blocked.
/obj/item/projectile/energy/declone
name = "declown"
name = "\improper Decloner Bolt"
icon_state = "declone"
nodamage = 1
damage_type = CLONE
@@ -25,7 +25,7 @@
/obj/item/projectile/energy/dart
name = "dart"
name = "\improper Dart"
icon_state = "toxin"
damage = 5
damage_type = TOX
@@ -33,7 +33,7 @@
/obj/item/projectile/energy/bolt
name = "bolt"
name = "\improper Bolt"
icon_state = "cbbolt"
damage = 10
damage_type = TOX
@@ -43,7 +43,7 @@
/obj/item/projectile/energy/bolt/large
name = "largebolt"
name = "\improper Large Bolt"
damage = 20

View File

@@ -1,5 +1,5 @@
/obj/item/projectile/ion
name = "ion bolt"
name = "\improper Ion Bolt"
icon_state = "ion"
damage = 0
damage_type = BURN
@@ -13,7 +13,7 @@
/obj/item/projectile/bullet/gyro
name ="gyro"
name ="\improper Rocket"
icon_state= "bolter"
damage = 50
flag = "bullet"
@@ -24,7 +24,7 @@
return 1
/obj/item/projectile/temp
name = "freeze beam"
name = "\improper Freeze Beam"
icon_state = "ice_2"
damage = 0
damage_type = BURN