mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-25 09:31:13 +00:00
Merge branch 'master' of github.com:Baystation12/Baystation12
This commit is contained in:
@@ -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>"
|
||||
@@ -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'
|
||||
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)]°C) ([round(temperature*1.8-459.67)]°F)</FONT>"
|
||||
else
|
||||
temp_text = "<FONT color=blue>[temperature] ([round(temperature-T0C)]°C) ([round(temperature*1.8-459.67)]°F)</FONT>"
|
||||
if(..())
|
||||
user.machine = src
|
||||
var/temp_text = ""
|
||||
if(temperature > (T0C - 50))
|
||||
temp_text = "<FONT color=black>[temperature] ([round(temperature-T0C)]°C) ([round(temperature*1.8-459.67)]°F)</FONT>"
|
||||
else
|
||||
temp_text = "<FONT color=blue>[temperature] ([round(temperature-T0C)]°C) ([round(temperature*1.8-459.67)]°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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user