Bleeding edgy refresh (#303)

* not code stuff

* other things

* global vars, defines, helpers

* onclick hud stuff, orphans, world.dm

* controllers and datums

* game folder

* everything not client/mobs in modules

* client folder

* stage 1 mob stuff

* simple animal things

* silicons

* carbon things

* ayylmaos and monkeys

* hyoomahn

* icons n shit

* sprite fixes

* compile fixes

* some fixes I cherrypicked.

* qdel fixes

* forgot brain refractors
This commit is contained in:
Poojawa
2017-03-21 11:44:10 -05:00
committed by GitHub
parent 099a6c8764
commit f67e9f6d87
1476 changed files with 344416 additions and 40694 deletions
+2 -2
View File
@@ -53,8 +53,8 @@
continue
if (boolets > 0)
box.update_icon()
user << "<span class='notice'>You collect [boolets] shell\s. [box] now contains [box.stored_ammo.len] shell\s.</span>"
to_chat(user, "<span class='notice'>You collect [boolets] shell\s. [box] now contains [box.stored_ammo.len] shell\s.</span>")
else
user << "<span class='warning'>You fail to collect anything!</span>"
to_chat(user, "<span class='warning'>You fail to collect anything!</span>")
else
return ..()
@@ -82,7 +82,7 @@
modified = 1
FD.modified = 1
FD.damage_type = BRUTE
user << "<span class='notice'>You pop the safety cap off of [src].</span>"
to_chat(user, "<span class='notice'>You pop the safety cap off of [src].</span>")
update_icon()
else if (istype(A, /obj/item/weapon/pen))
if(modified)
@@ -92,11 +92,11 @@
FD.pen = A
FD.damage = 5
FD.nodamage = 0
user << "<span class='notice'>You insert [A] into [src].</span>"
to_chat(user, "<span class='notice'>You insert [A] into [src].</span>")
else
user << "<span class='warning'>There's already something in [src].</span>"
to_chat(user, "<span class='warning'>There's already something in [src].</span>")
else
user << "<span class='warning'>The safety cap prevents you from inserting [A] into [src].</span>"
to_chat(user, "<span class='warning'>The safety cap prevents you from inserting [A] into [src].</span>")
else
return ..()
@@ -106,7 +106,7 @@
FD.damage = initial(FD.damage)
FD.nodamage = initial(FD.nodamage)
user.put_in_hands(FD.pen)
user << "<span class='notice'>You remove [FD.pen] from [src].</span>"
to_chat(user, "<span class='notice'>You remove [FD.pen] from [src].</span>")
FD.pen = null
/obj/item/ammo_casing/caseless/foam_dart/riot
+12 -28
View File
@@ -8,6 +8,18 @@
fire_sound = 'sound/weapons/Laser.ogg'
firing_effect_type = /obj/effect/overlay/temp/dir_setting/firing_effect/energy
/obj/item/ammo_casing/energy/chameleon
e_cost = 0
var/list/projectile_vars = list()
/obj/item/ammo_casing/energy/chameleon/ready_proj()
. = ..()
if(!BB)
newshot()
for(var/V in projectile_vars)
if(BB.vars[V])
BB.vars[V] = projectile_vars[V]
/obj/item/ammo_casing/energy/laser
projectile_type = /obj/item/projectile/beam/laser
select_name = "kill"
@@ -222,31 +234,3 @@
/obj/item/ammo_casing/energy/plasma/adv
projectile_type = /obj/item/projectile/plasma/adv
/obj/item/ammo_casing/energy/plasmagun
projectile_type = /obj/item/projectile/energy/plasmabolt
e_cost = 50
fire_sound = 'sound/weapons/elecfire.ogg'
/obj/item/ammo_casing/energy/plasmagun/rifle
projectile_type = /obj/item/projectile/energy/plasmabolt/rifle
e_cost = 150
/obj/item/ammo_casing/energy/plasmagun/light
projectile_type = /obj/item/projectile/energy/plasmabolt/light
e_cost = 50
/obj/item/ammo_casing/energy/plasmagun/MP40k
projectile_type = /obj/item/projectile/energy/plasmabolt/MP40k
e_cost = 75
/obj/item/ammo_casing/energy/megabuster
projectile_type = /obj/item/projectile/energy/megabuster
fire_sound = 'sound/weapons/megabuster.ogg'
e_cost = 5
/obj/item/ammo_casing/energy/buster
e_cost = 25
projectile_type = /obj/item/projectile/energy/buster
fire_sound = 'sound/weapons/mmlbuster.ogg'
@@ -0,0 +1,27 @@
/obj/item/ammo_casing/energy/plasmagun
projectile_type = /obj/item/projectile/energy/plasmabolt
e_cost = 50
fire_sound = 'sound/weapons/elecfire.ogg'
/obj/item/ammo_casing/energy/plasmagun/rifle
projectile_type = /obj/item/projectile/energy/plasmabolt/rifle
e_cost = 150
/obj/item/ammo_casing/energy/plasmagun/light
projectile_type = /obj/item/projectile/energy/plasmabolt/light
e_cost = 50
/obj/item/ammo_casing/energy/plasmagun/MP40k
projectile_type = /obj/item/projectile/energy/plasmabolt/MP40k
e_cost = 75
/obj/item/ammo_casing/energy/megabuster
projectile_type = /obj/item/projectile/energy/megabuster
fire_sound = 'sound/weapons/megabuster.ogg'
e_cost = 5
/obj/item/ammo_casing/energy/buster
e_cost = 25
projectile_type = /obj/item/projectile/energy/buster
fire_sound = 'sound/weapons/mmlbuster.ogg'
+2 -2
View File
@@ -85,7 +85,7 @@
if(num_loaded)
if(!silent)
user << "<span class='notice'>You load [num_loaded] shell\s into \the [src]!</span>"
to_chat(user, "<span class='notice'>You load [num_loaded] shell\s into \the [src]!</span>")
A.update_icon()
update_icon()
@@ -95,7 +95,7 @@
var/obj/item/ammo_casing/A = get_round()
if(A)
user.put_in_hands(A)
user << "<span class='notice'>You remove a round from \the [src]!</span>"
to_chat(user, "<span class='notice'>You remove a round from \the [src]!</span>")
update_icon()
/obj/item/ammo_box/update_icon()
+16 -34
View File
@@ -83,11 +83,11 @@
/obj/item/weapon/gun/examine(mob/user)
..()
if(pin)
user << "It has [pin] installed."
to_chat(user, "It has [pin] installed.")
else
user << "It doesn't have a firing pin installed, and won't fire."
to_chat(user, "It doesn't have a firing pin installed, and won't fire.")
if(unique_reskin && !current_skin)
user << "<span class='notice'>Alt-click it to reskin it.</span>"
to_chat(user, "<span class='notice'>Alt-click it to reskin it.</span>")
//called after the gun has successfully fired its chambered ammo.
/obj/item/weapon/gun/proc/process_chamber()
@@ -101,7 +101,7 @@
/obj/item/weapon/gun/proc/shoot_with_empty_chamber(mob/living/user as mob|obj)
user << "<span class='danger'>*click*</span>"
to_chat(user, "<span class='danger'>*click*</span>")
playsound(user, 'sound/weapons/empty.ogg', 100, 1)
@@ -154,14 +154,14 @@
if(clumsy_check)
if(istype(user))
if (user.disabilities & CLUMSY && prob(40))
user << "<span class='userdanger'>You shoot yourself in the foot with [src]!</span>"
to_chat(user, "<span class='userdanger'>You shoot yourself in the foot with [src]!</span>")
var/shot_leg = pick("l_leg", "r_leg")
process_fire(user,user,0,params, zone_override = shot_leg)
user.drop_item()
return
if(weapon_weight == WEAPON_HEAVY && user.get_inactive_held_item())
user << "<span class='userdanger'>You need both hands free to fire [src]!</span>"
to_chat(user, "<span class='userdanger'>You need both hands free to fire [src]!</span>")
return
//DUAL (or more!) WIELDING
@@ -197,7 +197,7 @@
pin.auth_fail(user)
return 0
else
user << "<span class='warning'>[src]'s trigger is locked. This weapon doesn't have a firing pin installed!</span>"
to_chat(user, "<span class='warning'>[src]'s trigger is locked. This weapon doesn't have a firing pin installed!</span>")
return 0
/obj/item/weapon/gun/proc/recharge_newshot()
@@ -282,9 +282,9 @@
if(!gun_light)
if(!user.transferItemToLoc(I, src))
return
user << "<span class='notice'>You click [S] into place on [src].</span>"
to_chat(user, "<span class='notice'>You click [S] into place on [src].</span>")
if(S.on)
SetLuminosity(0)
set_light(0)
gun_light = S
update_icon()
update_gunlight(user)
@@ -296,7 +296,7 @@
if(istype(I, /obj/item/weapon/screwdriver))
if(gun_light)
for(var/obj/item/device/flashlight/seclite/S in src)
user << "<span class='notice'>You unscrew the seclite from [src].</span>"
to_chat(user, "<span class='notice'>You unscrew the seclite from [src].</span>")
gun_light = null
S.forceMove(get_turf(user))
update_gunlight(user)
@@ -320,7 +320,7 @@
var/mob/living/carbon/human/user = usr
gun_light.on = !gun_light.on
user << "<span class='notice'>You toggle the gunlight [gun_light.on ? "on":"off"].</span>"
to_chat(user, "<span class='notice'>You toggle the gunlight [gun_light.on ? "on":"off"].</span>")
playsound(user, 'sound/weapons/empty.ogg', 100, 1)
update_gunlight(user)
@@ -329,21 +329,12 @@
/obj/item/weapon/gun/proc/update_gunlight(mob/user = null)
if(gun_light)
if(gun_light.on)
if(loc == user)
user.AddLuminosity(gun_light.brightness_on)
else if(isturf(loc))
SetLuminosity(gun_light.brightness_on)
set_light(gun_light.brightness_on)
else
if(loc == user)
user.AddLuminosity(-gun_light.brightness_on)
else if(isturf(loc))
SetLuminosity(0)
set_light(0)
update_icon()
else
if(loc == user)
user.AddLuminosity(-5)
else if(isturf(loc))
SetLuminosity(0)
set_light(0)
for(var/X in actions)
var/datum/action/A = X
A.UpdateButtonIcon()
@@ -351,19 +342,11 @@
/obj/item/weapon/gun/pickup(mob/user)
..()
if(gun_light)
if(gun_light.on)
user.AddLuminosity(gun_light.brightness_on)
SetLuminosity(0)
if(azoom)
azoom.Grant(user)
/obj/item/weapon/gun/dropped(mob/user)
..()
if(gun_light)
if(gun_light.on)
user.AddLuminosity(-gun_light.brightness_on)
SetLuminosity(gun_light.brightness_on)
zoom(user,FALSE)
if(azoom)
azoom.Remove(user)
@@ -372,7 +355,7 @@
/obj/item/weapon/gun/AltClick(mob/user)
..()
if(user.incapacitated())
user << "<span class='warning'>You can't do that right now!</span>"
to_chat(user, "<span class='warning'>You can't do that right now!</span>")
return
if(unique_reskin && !current_skin && loc == user)
reskin_gun(user)
@@ -385,7 +368,7 @@
if(options[choice] == null)
return
current_skin = options[choice]
M << "Your gun is now skinned as [choice]. Say hello to your new friend."
to_chat(M, "Your gun is now skinned as [choice]. Say hello to your new friend.")
update_icon()
@@ -493,4 +476,3 @@
if(zoomable)
azoom = new()
azoom.gun = src
+12 -12
View File
@@ -58,23 +58,23 @@
if (!magazine && istype(AM, mag_type))
if(user.transferItemToLoc(AM, src))
magazine = AM
user << "<span class='notice'>You load a new magazine into \the [src].</span>"
to_chat(user, "<span class='notice'>You load a new magazine into \the [src].</span>")
chamber_round()
A.update_icon()
update_icon()
return 1
else
user << "<span class='warning'>You cannot seem to get \the [src] out of your hands!</span>"
to_chat(user, "<span class='warning'>You cannot seem to get \the [src] out of your hands!</span>")
return
else if (magazine)
user << "<span class='notice'>There's already a magazine in \the [src].</span>"
to_chat(user, "<span class='notice'>There's already a magazine in \the [src].</span>")
if(istype(A, /obj/item/weapon/suppressor))
var/obj/item/weapon/suppressor/S = A
if(can_suppress)
if(!suppressed)
if(!user.transferItemToLoc(A, src))
return
user << "<span class='notice'>You screw [S] onto [src].</span>"
to_chat(user, "<span class='notice'>You screw [S] onto [src].</span>")
suppressed = A
S.oldsound = fire_sound
S.initial_w_class = w_class
@@ -83,10 +83,10 @@
update_icon()
return
else
user << "<span class='warning'>[src] already has a suppressor!</span>"
to_chat(user, "<span class='warning'>[src] already has a suppressor!</span>")
return
else
user << "<span class='warning'>You can't seem to figure out how to fit [S] on [src]!</span>"
to_chat(user, "<span class='warning'>You can't seem to figure out how to fit [S] on [src]!</span>")
return
return 0
@@ -97,7 +97,7 @@
if(!user.is_holding(src))
..()
return
user << "<span class='notice'>You unscrew [suppressed] from [src].</span>"
to_chat(user, "<span class='notice'>You unscrew [suppressed] from [src].</span>")
user.put_in_hands(suppressed)
fire_sound = S.oldsound
w_class = S.initial_w_class
@@ -113,21 +113,21 @@
user.put_in_hands(magazine)
magazine.update_icon()
magazine = null
user << "<span class='notice'>You pull the magazine out of \the [src].</span>"
to_chat(user, "<span class='notice'>You pull the magazine out of \the [src].</span>")
else if(chambered)
AC.loc = get_turf(src)
AC.SpinAnimation(10, 1)
chambered = null
user << "<span class='notice'>You unload the round from \the [src]'s chamber.</span>"
to_chat(user, "<span class='notice'>You unload the round from \the [src]'s chamber.</span>")
else
user << "<span class='notice'>There's no magazine in \the [src].</span>"
to_chat(user, "<span class='notice'>There's no magazine in \the [src].</span>")
update_icon()
return
/obj/item/weapon/gun/ballistic/examine(mob/user)
..()
user << "Has [get_ammo()] round\s remaining."
to_chat(user, "Has [get_ammo()] round\s remaining.")
/obj/item/weapon/gun/ballistic/proc/get_ammo(countchambered = 1)
var/boolets = 0 //mature var names for mature people
@@ -157,7 +157,7 @@
/obj/item/weapon/gun/ballistic/proc/sawoff(mob/user)
if(sawn_state == SAWN_OFF)
user << "<span class='warning'>\The [src] is already shortened!</span>"
to_chat(user, "<span class='warning'>\The [src] is already shortened!</span>")
return
user.changeNext_move(CLICK_CD_MELEE)
user.visible_message("[user] begins to shorten \the [src].", "<span class='notice'>You begin to shorten \the [src]...</span>")
@@ -38,18 +38,18 @@
if(user.transferItemToLoc(AM, src))
magazine = AM
if(oldmag)
user << "<span class='notice'>You perform a tactical reload on \the [src], replacing the magazine.</span>"
to_chat(user, "<span class='notice'>You perform a tactical reload on \the [src], replacing the magazine.</span>")
oldmag.dropped()
oldmag.forceMove(get_turf(src.loc))
oldmag.update_icon()
else
user << "<span class='notice'>You insert the magazine into \the [src].</span>"
to_chat(user, "<span class='notice'>You insert the magazine into \the [src].</span>")
chamber_round()
A.update_icon()
update_icon()
return 1
else
user << "<span class='warning'>You cannot seem to get \the [src] out of your hands!</span>"
to_chat(user, "<span class='warning'>You cannot seem to get \the [src] out of your hands!</span>")
/obj/item/weapon/gun/ballistic/automatic/ui_action_click()
burst_select()
@@ -60,11 +60,11 @@
if(!select)
burst_size = 1
fire_delay = 0
user << "<span class='notice'>You switch to semi-automatic.</span>"
to_chat(user, "<span class='notice'>You switch to semi-automatic.</span>")
else
burst_size = initial(burst_size)
fire_delay = initial(fire_delay)
user << "<span class='notice'>You switch to [burst_size]-rnd burst.</span>"
to_chat(user, "<span class='notice'>You switch to [burst_size]-rnd burst.</span>")
playsound(user, 'sound/weapons/empty.ogg', 100, 1)
update_icon()
@@ -195,15 +195,15 @@
select = 1
burst_size = initial(burst_size)
fire_delay = initial(fire_delay)
user << "<span class='notice'>You switch to [burst_size]-rnd burst.</span>"
to_chat(user, "<span class='notice'>You switch to [burst_size]-rnd burst.</span>")
if(1)
select = 2
user << "<span class='notice'>You switch to grenades.</span>"
to_chat(user, "<span class='notice'>You switch to grenades.</span>")
if(2)
select = 0
burst_size = 1
fire_delay = 0
user << "<span class='notice'>You switch to semi-auto.</span>"
to_chat(user, "<span class='notice'>You switch to semi-auto.</span>")
playsound(user, 'sound/weapons/empty.ogg', 100, 1)
update_icon()
return
@@ -299,7 +299,7 @@
/obj/item/weapon/gun/ballistic/automatic/l6_saw/attack_self(mob/user)
cover_open = !cover_open
user << "<span class='notice'>You [cover_open ? "open" : "close"] [src]'s cover.</span>"
to_chat(user, "<span class='notice'>You [cover_open ? "open" : "close"] [src]'s cover.</span>")
update_icon()
@@ -310,7 +310,7 @@
/obj/item/weapon/gun/ballistic/automatic/l6_saw/afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, flag, params) //what I tried to do here is just add a check to see if the cover is open or not and add an icon_state change because I can't figure out how c-20rs do it with overlays
if(cover_open)
user << "<span class='warning'>[src]'s cover is open! Close it before firing!</span>"
to_chat(user, "<span class='warning'>[src]'s cover is open! Close it before firing!</span>")
else
..()
update_icon()
@@ -329,7 +329,7 @@
user.put_in_hands(magazine)
magazine = null
update_icon()
user << "<span class='notice'>You remove the magazine from [src].</span>"
to_chat(user, "<span class='notice'>You remove the magazine from [src].</span>")
/obj/item/weapon/gun/ballistic/automatic/l6_saw/attackby(obj/item/A, mob/user, params)
@@ -337,7 +337,7 @@
if(.)
return
if(!cover_open)
user << "<span class='warning'>[src]'s cover is closed! You can't insert a new mag.</span>"
to_chat(user, "<span class='warning'>[src]'s cover is closed! You can't insert a new mag.</span>")
return
..()
@@ -9,12 +9,15 @@
var/item_state_firing = "bow"
fire_sound = 'sound/weapons/grenadelaunch.ogg'
mag_type = /obj/item/ammo_box/magazine/internal/bow
flags = HANDSLOW
weapon_weight = WEAPON_HEAVY
var/draw_sound = 'sound/weapons/draw_bow.ogg'
var/ready_to_fire = 0
var/slowdown_when_ready = 2
/obj/item/weapon/gun/ballistic/bow/Initialize(mapload)
..()
SET_SECONDARY_FLAG(src, SLOWS_WHILE_IN_HAND)
/obj/item/weapon/gun/ballistic/bow/update_icon()
if(ready_to_fire)
icon_state = icon_state_firing
@@ -47,7 +50,7 @@
/obj/item/weapon/gun/ballistic/bow/attackby(obj/item/A, mob/user, params)
var/num_loaded = magazine.attackby(A, user, params, 1)
if(num_loaded)
user << "<span class='notice'>You ready \the [A] into \the [src].</span>"
to_chat(user, "<span class='notice'>You ready \the [A] into \the [src].</span>")
update_icon()
chamber_round()
@@ -22,7 +22,7 @@
/obj/item/weapon/minigunpack/Destroy()
STOP_PROCESSING(SSobj, src)
..()
return ..()
/obj/item/weapon/minigunpack/process()
overheat = max(0, overheat - heat_diffusion)
@@ -34,13 +34,13 @@
armed = 1
if(!user.put_in_hands(gun))
armed = 0
user << "<span class='warning'>You need a free hand to hold the gun!</span>"
to_chat(user, "<span class='warning'>You need a free hand to hold the gun!</span>")
return
update_icon()
gun.forceMove(user)
user.update_inv_back()
else
user << "<span class='warning'>You are already holding the gun!</span>"
to_chat(user, "<span class='warning'>You are already holding the gun!</span>")
else
..()
@@ -82,7 +82,7 @@
gun.forceMove(src)
armed = 0
if(user)
user << "<span class='notice'>You attach the [gun.name] to the [name].</span>"
to_chat(user, "<span class='notice'>You attach the [gun.name] to the [name].</span>")
else
src.visible_message("<span class='warning'>The [gun.name] snaps back onto the [name]!</span>")
update_icon()
@@ -96,7 +96,7 @@
icon_state = "minigun_spin"
item_state = "minigun"
origin_tech = "combat=6;powerstorage=5;magnets=4"
flags = CONDUCT | HANDSLOW
flags = CONDUCT
slowdown = 1
slot_flags = null
w_class = WEIGHT_CLASS_HUGE
@@ -110,6 +110,17 @@
casing_ejector = 0
var/obj/item/weapon/minigunpack/ammo_pack
/obj/item/weapon/gun/ballistic/minigun/Initialize(mapload)
..()
SET_SECONDARY_FLAG(src, SLOWS_WHILE_IN_HAND)
if(!ammo_pack)
if(istype(loc,/obj/item/weapon/minigunpack)) //We should spawn inside a ammo pack so let's use that one.
ammo_pack = loc
..()
else
qdel(src)//No pack, no gun
/obj/item/weapon/gun/ballistic/minigun/attack_self(mob/living/user)
return
@@ -125,21 +136,13 @@
ammo_pack.overheat += burst_size
..()
else
user << "The gun's heat sensor locked the trigger to prevent lens damage."
to_chat(user, "The gun's heat sensor locked the trigger to prevent lens damage.")
/obj/item/weapon/gun/ballistic/minigun/afterattack(atom/target, mob/living/user, flag, params)
if(!ammo_pack || ammo_pack.loc != user)
user << "You need the backpack power source to fire the gun!"
to_chat(user, "You need the backpack power source to fire the gun!")
..()
/obj/item/weapon/gun/ballistic/minigun/New()
if(!ammo_pack)
if(istype(loc,/obj/item/weapon/minigunpack)) //We should spawn inside a ammo pack so let's use that one.
ammo_pack = loc
..()
else
qdel(src)//No pack, no gun
/obj/item/weapon/gun/ballistic/minigun/dropped(mob/living/user)
ammo_pack.attach_gun(user)
@@ -72,7 +72,7 @@
/obj/item/weapon/gun/ballistic/automatic/speargun/attackby(obj/item/A, mob/user, params)
var/num_loaded = magazine.attackby(A, user, params, 1)
if(num_loaded)
user << "<span class='notice'>You load [num_loaded] spear\s into \the [src].</span>"
to_chat(user, "<span class='notice'>You load [num_loaded] spear\s into \the [src].</span>")
update_icon()
chamber_round()
@@ -33,7 +33,12 @@
/obj/item/weapon/gun/ballistic/automatic/pistol/deagle/update_icon()
..()
icon_state = "[initial(icon_state)][magazine ? "" : "-e"]"
if(magazine)
cut_overlays()
add_overlay("deagle_magazine")
else
cut_overlays()
icon_state = "[initial(icon_state)][chambered ? "" : "-e"]"
/obj/item/weapon/gun/ballistic/automatic/pistol/deagle/gold
desc = "A gold plated desert eagle folded over a million times by superior martian gunsmiths. Uses .50 AE ammo."
@@ -64,12 +69,12 @@
origin_tech = "combat=3;materials=2;abductor=3"
/obj/item/weapon/gun/ballistic/automatic/pistol/stickman/pickup(mob/living/user)
user << "<span class='notice'>As you try to pick up [src], it slips out of your grip..</span>"
to_chat(user, "<span class='notice'>As you try to pick up [src], it slips out of your grip..</span>")
if(prob(50))
user << "<span class='notice'>..and vanishes from your vision! Where the hell did it go?</span>"
to_chat(user, "<span class='notice'>..and vanishes from your vision! Where the hell did it go?</span>")
qdel(src)
user.update_icons()
else
user << "<span class='notice'>..and falls into view. Whew, that was a close one.</span>"
to_chat(user, "<span class='notice'>..and falls into view. Whew, that was a close one.</span>")
user.dropItemToGround(src)
@@ -27,7 +27,7 @@
return
var/num_loaded = magazine.attackby(A, user, params, 1)
if(num_loaded)
user << "<span class='notice'>You load [num_loaded] shell\s into \the [src].</span>"
to_chat(user, "<span class='notice'>You load [num_loaded] shell\s into \the [src].</span>")
A.update_icon()
update_icon()
chamber_round(0)
@@ -44,9 +44,9 @@
CB.update_icon()
num_unloaded++
if (num_unloaded)
user << "<span class='notice'>You unload [num_unloaded] shell\s from [src].</span>"
to_chat(user, "<span class='notice'>You unload [num_unloaded] shell\s from [src].</span>")
else
user << "<span class='warning'>[src] is empty!</span>"
to_chat(user, "<span class='warning'>[src] is empty!</span>")
/obj/item/weapon/gun/ballistic/revolver/verb/spin()
set name = "Spin Chamber"
@@ -83,7 +83,7 @@
/obj/item/weapon/gun/ballistic/revolver/examine(mob/user)
..()
user << "[get_ammo(0,0)] of those are live rounds."
to_chat(user, "[get_ammo(0,0)] of those are live rounds.")
/obj/item/weapon/gun/ballistic/revolver/detective
name = "\improper .38 Mars Special"
@@ -100,14 +100,13 @@
options["Black Panther"] = "detective_panther"
options["Gold Trim"] = "detective_gold"
options["The Peacemaker"] = "detective_peacemaker"
options["The Spacemaker"] = "detective_future"
options["Cancel"] = null
/obj/item/weapon/gun/ballistic/revolver/detective/process_fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, message = 1, params, zone_override = "")
if(magazine.caliber != initial(magazine.caliber))
if(prob(70 - (magazine.ammo_count() * 10))) //minimum probability of 10, maximum of 60
playsound(user, fire_sound, 50, 1)
user << "<span class='userdanger'>[src] blows up in your face!</span>"
to_chat(user, "<span class='userdanger'>[src] blows up in your face!</span>")
user.take_bodypart_damage(0,20)
user.dropItemToGround(src)
return 0
@@ -117,31 +116,31 @@
..()
if(istype(A, /obj/item/weapon/screwdriver))
if(magazine.caliber == "38")
user << "<span class='notice'>You begin to reinforce the barrel of [src]...</span>"
to_chat(user, "<span class='notice'>You begin to reinforce the barrel of [src]...</span>")
if(magazine.ammo_count())
afterattack(user, user) //you know the drill
user.visible_message("<span class='danger'>[src] goes off!</span>", "<span class='userdanger'>[src] goes off in your face!</span>")
return
if(do_after(user, 30*A.toolspeed, target = src))
if(magazine.ammo_count())
user << "<span class='warning'>You can't modify it!</span>"
to_chat(user, "<span class='warning'>You can't modify it!</span>")
return
magazine.caliber = "357"
desc = "The barrel and chamber assembly seems to have been modified."
user << "<span class='notice'>You reinforce the barrel of [src]. Now it will fire .357 rounds.</span>"
to_chat(user, "<span class='notice'>You reinforce the barrel of [src]. Now it will fire .357 rounds.</span>")
else
user << "<span class='notice'>You begin to revert the modifications to [src]...</span>"
to_chat(user, "<span class='notice'>You begin to revert the modifications to [src]...</span>")
if(magazine.ammo_count())
afterattack(user, user) //and again
user.visible_message("<span class='danger'>[src] goes off!</span>", "<span class='userdanger'>[src] goes off in your face!</span>")
return
if(do_after(user, 30*A.toolspeed, target = src))
if(magazine.ammo_count())
user << "<span class='warning'>You can't modify it!</span>"
to_chat(user, "<span class='warning'>You can't modify it!</span>")
return
magazine.caliber = "38"
desc = initial(desc)
user << "<span class='notice'>You remove the modifications on [src]. Now it will fire .38 rounds.</span>"
to_chat(user, "<span class='notice'>You remove the modifications on [src]. Now it will fire .38 rounds.</span>")
/obj/item/weapon/gun/ballistic/revolver/mateba
@@ -209,13 +208,13 @@
return
if(target != user)
if(ismob(target))
user << "<span class='warning'>A mechanism prevents you from shooting anyone but yourself!</span>"
to_chat(user, "<span class='warning'>A mechanism prevents you from shooting anyone but yourself!</span>")
return
if(ishuman(user))
var/mob/living/carbon/human/H = user
if(!spun)
user << "<span class='warning'>You need to spin the revolver's chamber first!</span>"
to_chat(user, "<span class='warning'>You need to spin the revolver's chamber first!</span>")
return
spun = FALSE
@@ -301,9 +300,9 @@
CB.update_icon()
num_unloaded++
if (num_unloaded)
user << "<span class='notice'>You break open \the [src] and unload [num_unloaded] shell\s.</span>"
to_chat(user, "<span class='notice'>You break open \the [src] and unload [num_unloaded] shell\s.</span>")
else
user << "<span class='warning'>[src] is empty!</span>"
to_chat(user, "<span class='warning'>[src] is empty!</span>")
// IMPROVISED SHOTGUN //
@@ -327,11 +326,11 @@
var/obj/item/stack/cable_coil/C = A
if(C.use(10))
slot_flags = SLOT_BACK
user << "<span class='notice'>You tie the lengths of cable to the shotgun, making a sling.</span>"
to_chat(user, "<span class='notice'>You tie the lengths of cable to the shotgun, making a sling.</span>")
slung = 1
update_icon()
else
user << "<span class='warning'>You need at least ten lengths of cable if you want to make a sling!</span>"
to_chat(user, "<span class='warning'>You need at least ten lengths of cable if you want to make a sling!</span>")
/obj/item/weapon/gun/ballistic/revolver/doublebarrel/improvised/update_icon()
..()
@@ -19,7 +19,7 @@
return
var/num_loaded = magazine.attackby(A, user, params, 1)
if(num_loaded)
user << "<span class='notice'>You load [num_loaded] shell\s into \the [src]!</span>"
to_chat(user, "<span class='notice'>You load [num_loaded] shell\s into \the [src]!</span>")
A.update_icon()
update_icon()
@@ -72,7 +72,7 @@
/obj/item/weapon/gun/ballistic/shotgun/examine(mob/user)
..()
if (chambered)
user << "A [chambered.BB ? "live" : "spent"] one is in the chamber."
to_chat(user, "A [chambered.BB ? "live" : "spent"] one is in the chamber.")
/obj/item/weapon/gun/ballistic/shotgun/lethal
mag_type = /obj/item/ammo_box/magazine/internal/shot/lethal
@@ -120,13 +120,13 @@
/obj/item/weapon/gun/ballistic/shotgun/boltaction/attackby(obj/item/A, mob/user, params)
if(!bolt_open)
user << "<span class='notice'>The bolt is closed!</span>"
to_chat(user, "<span class='notice'>The bolt is closed!</span>")
return
. = ..()
/obj/item/weapon/gun/ballistic/shotgun/boltaction/examine(mob/user)
..()
user << "The bolt is [bolt_open ? "open" : "closed"]."
to_chat(user, "The bolt is [bolt_open ? "open" : "closed"].")
/obj/item/weapon/gun/ballistic/shotgun/boltaction/enchanted
@@ -224,9 +224,9 @@
alternate_magazine = current_mag
toggled = !toggled
if(toggled)
user << "You switch to tube B."
to_chat(user, "You switch to tube B.")
else
user << "You switch to tube A."
to_chat(user, "You switch to tube A.")
/obj/item/weapon/gun/ballistic/shotgun/automatic/dual_tube/AltClick(mob/living/user)
if(user.incapacitated() || !Adjacent(user) || !istype(user))
+1 -1
View File
@@ -109,7 +109,7 @@
fire_sound = shot.fire_sound
fire_delay = shot.delay
if (shot.select_name)
user << "<span class='notice'>[src] is now set to [shot.select_name].</span>"
to_chat(user, "<span class='notice'>[src] is now set to [shot.select_name].</span>")
chambered = null
recharge_newshot(1)
update_icon()
@@ -106,12 +106,12 @@
if(0 to 200)
fail_tick += (2*(fail_chance))
M.rad_act(40)
M << "<span class='userdanger'>Your [name] feels warmer.</span>"
to_chat(M, "<span class='userdanger'>Your [name] feels warmer.</span>")
if(201 to INFINITY)
SSobj.processing.Remove(src)
M.rad_act(80)
crit_fail = 1
M << "<span class='userdanger'>Your [name]'s reactor overloads!</span>"
to_chat(M, "<span class='userdanger'>Your [name]'s reactor overloads!</span>")
/obj/item/weapon/gun/energy/e_gun/nuclear/emp_act(severity)
..()
@@ -25,20 +25,20 @@
/obj/item/weapon/gun/energy/kinetic_accelerator/examine(mob/user)
..()
if(max_mod_capacity)
user << "<b>[get_remaining_mod_capacity()]%</b> mod capacity remaining."
to_chat(user, "<b>[get_remaining_mod_capacity()]%</b> mod capacity remaining.")
for(var/A in get_modkits())
var/obj/item/borg/upgrade/modkit/M = A
user << "<span class='notice'>There is a [M.name] mod installed, using <b>[M.cost]%</b> capacity.</span>"
to_chat(user, "<span class='notice'>There is a [M.name] mod installed, using <b>[M.cost]%</b> capacity.</span>")
/obj/item/weapon/gun/energy/kinetic_accelerator/attackby(obj/item/A, mob/user)
if(istype(A, /obj/item/weapon/crowbar))
if(modkits.len)
user << "<span class='notice'>You pry the modifications out.</span>"
to_chat(user, "<span class='notice'>You pry the modifications out.</span>")
playsound(loc, A.usesound, 100, 1)
for(var/obj/item/borg/upgrade/modkit/M in modkits)
M.uninstall(src)
else
user << "<span class='notice'>There are no modifications currently installed.</span>"
to_chat(user, "<span class='notice'>There are no modifications currently installed.</span>")
else if(istype(A, /obj/item/borg/upgrade/modkit))
var/obj/item/borg/upgrade/modkit/MK = A
MK.install(src, user)
@@ -123,7 +123,7 @@
if(!suppressed)
playsound(src.loc, 'sound/weapons/kenetic_reload.ogg', 60, 1)
else
loc << "<span class='warning'>[src] silently charges up.<span>"
to_chat(loc, "<span class='warning'>[src] silently charges up.<span>")
update_icon()
overheat = FALSE
@@ -205,7 +205,7 @@
for(var/mob/living/L in range(1, target_turf) - firer - target)
var/armor = L.run_armor_check(def_zone, flag, "", "", armour_penetration)
L.apply_damage(damage*mob_aoe, damage_type, def_zone, armor)
L << "<span class='userdanger'>You're struck by a [name]!</span>"
to_chat(L, "<span class='userdanger'>You're struck by a [name]!</span>")
//Modkits
@@ -224,7 +224,7 @@
/obj/item/borg/upgrade/modkit/examine(mob/user)
..()
user << "<span class='notice'>Occupies <b>[cost]%</b> of mod capacity.</span>"
to_chat(user, "<span class='notice'>Occupies <b>[cost]%</b> of mod capacity.</span>")
/obj/item/borg/upgrade/modkit/attackby(obj/item/A, mob/user)
if(istype(A, /obj/item/weapon/gun/energy/kinetic_accelerator) && !issilicon(user))
@@ -254,13 +254,13 @@
if(.)
if(!user.transferItemToLoc(src, KA))
return
user << "<span class='notice'>You install the modkit.</span>"
to_chat(user, "<span class='notice'>You install the modkit.</span>")
playsound(loc, 'sound/items/Screwdriver.ogg', 100, 1)
KA.modkits += src
else
user << "<span class='notice'>The modkit you're trying to install would conflict with an already installed modkit. Use a crowbar to remove existing modkits.</span>"
to_chat(user, "<span class='notice'>The modkit you're trying to install would conflict with an already installed modkit. Use a crowbar to remove existing modkits.</span>")
else
user << "<span class='notice'>You don't have room(<b>[KA.get_remaining_mod_capacity()]%</b> remaining, [cost]% needed) to install this modkit. Use a crowbar to remove existing modkits.</span>"
to_chat(user, "<span class='notice'>You don't have room(<b>[KA.get_remaining_mod_capacity()]%</b> remaining, [cost]% needed) to install this modkit. Use a crowbar to remove existing modkits.</span>")
. = FALSE
@@ -277,7 +277,7 @@
name = "range increase"
desc = "Increases the range of a kinetic accelerator when installed."
modifier = 1
cost = 24 //so you can fit four plus a tracer cosmetic
cost = 25
/obj/item/borg/upgrade/modkit/range/modify_projectile(obj/item/projectile/kinetic/K)
K.range += modifier
@@ -134,25 +134,3 @@
pin = /obj/item/device/firing_pin/tag/red
ammo_x_offset = 2
selfcharge = 1
/obj/item/weapon/gun/energy/laser/rifle
name = "laser rifle"
desc = "A laser rifle issued to high ranking members of a certain shadow corporation."
icon_state = "xcomlasergun"
item_state = null
icon = 'icons/obj/guns/VGguns.dmi'
ammo_type = list(/obj/item/ammo_casing/energy/lasergun)
ammo_x_offset = 4
/obj/item/weapon/gun/energy/laser/LaserAK
name = "Laser AK470"
desc = "A laser AK. Death solves all problems -- No man, no problem."
icon_state = "LaserAK"
item_state = null
icon = 'icons/obj/guns/VGguns.dmi'
ammo_type = list(/obj/item/ammo_casing/energy/laser)
ammo_x_offset = 4
@@ -38,3 +38,23 @@
icon = 'icons/obj/guns/VGguns.dmi'
ammo_type = list(/obj/item/ammo_casing/energy/plasmagun/MP40k)
ammo_x_offset = 3
//Laser rifles, technically lazer, but w/e
/obj/item/weapon/gun/energy/laser/rifle
name = "laser rifle"
desc = "A laser rifle issued to high ranking members of a certain shadow corporation."
icon_state = "xcomlasergun"
item_state = null
icon = 'icons/obj/guns/VGguns.dmi'
ammo_type = list(/obj/item/ammo_casing/energy/lasergun)
ammo_x_offset = 4
/obj/item/weapon/gun/energy/laser/LaserAK
name = "Laser AK470"
desc = "A laser AK. Death solves all problems -- No man, no problem."
icon_state = "LaserAK"
item_state = null
icon = 'icons/obj/guns/VGguns.dmi'
ammo_type = list(/obj/item/ammo_casing/energy/laser)
ammo_x_offset = 4
@@ -71,7 +71,7 @@
ammo_type = list(/obj/item/ammo_casing/energy/laser/pulse)
/obj/item/weapon/gun/energy/pulse/destroyer/attack_self(mob/living/user)
user << "<span class='danger'>[src.name] has three settings, and they are all DESTROY.</span>"
to_chat(user, "<span class='danger'>[src.name] has three settings, and they are all DESTROY.</span>")
/obj/item/weapon/gun/energy/pulse/pistol/m1911
name = "\improper M1911-P"
@@ -56,7 +56,7 @@
/obj/item/weapon/gun/energy/meteorgun
name = "meteor gun"
desc = "For the love of god, make sure you're aiming this the right way!"
icon_state = "riotgun"
icon_state = "meteor_gun"
item_state = "c20r"
w_class = WEIGHT_CLASS_BULKY
ammo_type = list(/obj/item/ammo_casing/energy/meteor)
@@ -146,12 +146,12 @@
S.use(1)
power_supply.give(1000)
recharge_newshot(1)
user << "<span class='notice'>You insert [A] in [src], recharging it.</span>"
to_chat(user, "<span class='notice'>You insert [A] in [src], recharging it.</span>")
else if(istype(A, /obj/item/weapon/ore/plasma))
qdel(A)
power_supply.give(500)
recharge_newshot(1)
user << "<span class='notice'>You insert [A] in [src], recharging it.</span>"
to_chat(user, "<span class='notice'>You insert [A] in [src], recharging it.</span>")
else
..()
@@ -14,7 +14,7 @@
/obj/item/weapon/gun/grenadelauncher/examine(mob/user)
..()
user << "[grenades.len] / [max_grenades] grenades loaded."
to_chat(user, "[grenades.len] / [max_grenades] grenades loaded.")
/obj/item/weapon/gun/grenadelauncher/attackby(obj/item/I, mob/user, params)
@@ -23,10 +23,10 @@
if(!user.transferItemToLoc(I, src))
return
grenades += I
user << "<span class='notice'>You put the grenade in the grenade launcher.</span>"
user << "<span class='notice'>[grenades.len] / [max_grenades] Grenades.</span>"
to_chat(user, "<span class='notice'>You put the grenade in the grenade launcher.</span>")
to_chat(user, "<span class='notice'>[grenades.len] / [max_grenades] Grenades.</span>")
else
usr << "<span class='danger'>The grenade launcher cannot hold more grenades.</span>"
to_chat(usr, "<span class='danger'>The grenade launcher cannot hold more grenades.</span>")
/obj/item/weapon/gun/grenadelauncher/afterattack(obj/target, mob/user , flag)
if(target == user)
@@ -35,7 +35,7 @@
if(grenades.len)
fire_grenade(target,user)
else
user << "<span class='danger'>The grenade launcher is empty.</span>"
to_chat(user, "<span class='danger'>The grenade launcher is empty.</span>")
/obj/item/weapon/gun/grenadelauncher/proc/fire_grenade(atom/target, mob/user)
user.visible_message("<span class='danger'>[user] fired a grenade!</span>", \
+2 -2
View File
@@ -26,7 +26,7 @@
if(no_den_usage)
var/area/A = get_area(user)
if(istype(A, /area/wizard_station))
user << "<span class='warning'>You know better than to violate the security of The Den, best wait until you leave to use [src].<span>"
to_chat(user, "<span class='warning'>You know better than to violate the security of The Den, best wait until you leave to use [src].<span>")
return
else
no_den_usage = 0
@@ -72,7 +72,7 @@
return
/obj/item/weapon/gun/magic/shoot_with_empty_chamber(mob/living/user as mob|obj)
user << "<span class='warning'>The [name] whizzles quietly.<span>"
to_chat(user, "<span class='warning'>The [name] whizzles quietly.<span>")
/obj/item/weapon/gun/magic/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] is twisting [src] above [user.p_their()] head, releasing a magical blast! It looks like [user.p_theyre()] trying to commit suicide!</span>")
+7 -7
View File
@@ -19,7 +19,7 @@
/obj/item/weapon/gun/magic/wand/examine(mob/user)
..()
user << "Has [charges] charge\s remaining."
to_chat(user, "Has [charges] charge\s remaining.")
/obj/item/weapon/gun/magic/wand/update_icon()
icon_state = "[initial(icon_state)][charges ? "" : "-drained"]"
@@ -37,7 +37,7 @@
if(no_den_usage)
var/area/A = get_area(user)
if(istype(A, /area/wizard_station))
user << "<span class='warning'>You know better than to violate the security of The Den, best wait until you leave to use [src].<span>"
to_chat(user, "<span class='warning'>You know better than to violate the security of The Den, best wait until you leave to use [src].<span>")
return
else
no_den_usage = 0
@@ -50,7 +50,7 @@
/obj/item/weapon/gun/magic/wand/proc/zap_self(mob/living/user)
user.visible_message("<span class='danger'>[user] zaps [user.p_them()]self with [src].</span>")
playsound(user, fire_sound, 50, 1)
user.attack_log += "\[[time_stamp()]\] <b>[user]/[user.ckey]</b> zapped [user.p_them()]self with a <b>[src]</b>"
user.log_message("zapped [user.p_them()]self with a <b>[src]</b>", INDIVIDUAL_ATTACK_LOG)
/////////////////////////////////////
@@ -67,9 +67,9 @@
/obj/item/weapon/gun/magic/wand/death/zap_self(mob/living/user)
..()
user << "<span class='warning'>You irradiate yourself with pure energy! \
to_chat(user, "<span class='warning'>You irradiate yourself with pure energy! \
[pick("Do not pass go. Do not collect 200 zorkmids.","You feel more confident in your spell casting skills.","You Die...","Do you want your possessions identified?")]\
</span>"
</span>")
user.adjustOxyLoss(500)
charges--
@@ -92,7 +92,7 @@
var/mob/living/carbon/C = user
C.regenerate_limbs()
C.regenerate_organs()
user << "<span class='notice'>You feel great!</span>"
to_chat(user, "<span class='notice'>You feel great!</span>")
charges--
..()
@@ -148,7 +148,7 @@
no_den_usage = 1
/obj/item/weapon/gun/magic/wand/door/zap_self(mob/living/user)
user << "<span class='notice'>You feel vaguely more open with your feelings.</span>"
to_chat(user, "<span class='notice'>You feel vaguely more open with your feelings.</span>")
charges--
..()
+1 -1
View File
@@ -76,7 +76,7 @@
if(get_dist(source, current_target)>max_range || !los_check(source, current_target))
LoseTarget()
if(isliving(source))
source << "<span class='warning'>You lose control of the beam!</span>"
to_chat(source, "<span class='warning'>You lose control of the beam!</span>")
return
if(current_target)
+5 -5
View File
@@ -32,11 +32,11 @@
/obj/item/weapon/gun/syringe/examine(mob/user)
..()
user << "Can hold [max_syringes] syringe\s. Has [syringes.len] syringe\s remaining."
to_chat(user, "Can hold [max_syringes] syringe\s. Has [syringes.len] syringe\s remaining.")
/obj/item/weapon/gun/syringe/attack_self(mob/living/user)
if(!syringes.len)
user << "<span class='warning'>[src] is empty!</span>"
to_chat(user, "<span class='warning'>[src] is empty!</span>")
return 0
var/obj/item/weapon/reagent_containers/syringe/S = syringes[syringes.len]
@@ -45,7 +45,7 @@
S.loc = user.loc
syringes.Remove(S)
user << "<span class='notice'>You unload [S] from \the [src].</span>"
to_chat(user, "<span class='notice'>You unload [S] from \the [src].</span>")
return 1
@@ -54,12 +54,12 @@
if(syringes.len < max_syringes)
if(!user.transferItemToLoc(A, src))
return
user << "<span class='notice'>You load [A] into \the [src].</span>"
to_chat(user, "<span class='notice'>You load [A] into \the [src].</span>")
syringes.Add(A)
recharge_newshot()
return 1
else
usr << "<span class='warning'>[src] cannot hold more syringes!</span>"
to_chat(usr, "<span class='warning'>[src] cannot hold more syringes!</span>")
return 0
/obj/item/weapon/gun/syringe/rapidsyringe
+8 -8
View File
@@ -28,20 +28,20 @@
if(G.pin && (force_replace || G.pin.pin_removeable))
G.pin.loc = get_turf(G)
G.pin.gun_remove(user)
user << "<span class ='notice'>You remove [G]'s old pin.</span>"
to_chat(user, "<span class ='notice'>You remove [G]'s old pin.</span>")
if(!G.pin)
if(!user.temporarilyRemoveItemFromInventory(src))
return
gun_insert(user, G)
user << "<span class ='notice'>You insert [src] into [G].</span>"
to_chat(user, "<span class ='notice'>You insert [src] into [G].</span>")
else
user << "<span class ='notice'>This firearm already has a firing pin installed.</span>"
to_chat(user, "<span class ='notice'>This firearm already has a firing pin installed.</span>")
/obj/item/device/firing_pin/emag_act(mob/user)
if(!emagged)
emagged = 1
user << "<span class='notice'>You override the authentication mechanism.</span>"
to_chat(user, "<span class='notice'>You override the authentication mechanism.</span>")
/obj/item/device/firing_pin/proc/gun_insert(mob/living/user, obj/item/weapon/gun/G)
gun = G
@@ -61,7 +61,7 @@
user.show_message(fail_message, 1)
if(selfdestruct)
user.show_message("<span class='danger'>SELF-DESTRUCTING...</span><br>", 1)
user << "<span class='userdanger'>[gun] explodes!</span>"
to_chat(user, "<span class='userdanger'>[gun] explodes!</span>")
explosion(get_turf(gun), -1, 0, 2, 3)
if(gun)
qdel(gun)
@@ -165,7 +165,7 @@
var/mob/living/carbon/M = target
if(M.dna && M.dna.unique_enzymes)
unique_enzymes = M.dna.unique_enzymes
user << "<span class='notice'>DNA-LOCK SET.</span>"
to_chat(user, "<span class='notice'>DNA-LOCK SET.</span>")
/obj/item/device/firing_pin/dna/pin_auth(mob/living/carbon/user)
if(istype(user) && user.dna && user.dna.unique_enzymes)
@@ -178,7 +178,7 @@
if(!unique_enzymes)
if(istype(user) && user.dna && user.dna.unique_enzymes)
unique_enzymes = user.dna.unique_enzymes
user << "<span class='notice'>DNA-LOCK SET.</span>"
to_chat(user, "<span class='notice'>DNA-LOCK SET.</span>")
else
..()
@@ -200,7 +200,7 @@
var/mob/living/carbon/human/M = user
if(istype(M.wear_suit, suit_requirement))
return 1
user << "<span class='warning'>You need to be wearing [tagcolor] laser tag armor!</span>"
to_chat(user, "<span class='warning'>You need to be wearing [tagcolor] laser tag armor!</span>")
return 0
/obj/item/device/firing_pin/tag/red
+4 -4
View File
@@ -104,7 +104,7 @@
organ_hit_text = " in \the [parse_zone(limb_hit)]"
if(suppressed)
playsound(loc, hitsound, 5, 1, -1)
L << "<span class='userdanger'>You're shot by \a [src][organ_hit_text]!</span>"
to_chat(L, "<span class='userdanger'>You're shot by \a [src][organ_hit_text]!</span>")
else
if(hitsound)
var/volume = vol_by_damage()
@@ -279,7 +279,7 @@
//Split Y+Pixel_Y up into list(Y, Pixel_Y)
var/list/screen_loc_Y = splittext(screen_loc_params[2],":")
// world << "X: [screen_loc_X[1]] PixelX: [screen_loc_X[2]] / Y: [screen_loc_Y[1]] PixelY: [screen_loc_Y[2]]"
// to_chat(world, "X: [screen_loc_X[1]] PixelX: [screen_loc_X[2]] / Y: [screen_loc_Y[1]] PixelY: [screen_loc_Y[2]]")
var/x = text2num(screen_loc_X[1]) * 32 + text2num(screen_loc_X[2]) - 32
var/y = text2num(screen_loc_Y[1]) * 32 + text2num(screen_loc_Y[2]) - 32
@@ -288,9 +288,9 @@
var/ox = round(screenview/2) //"origin" x
var/oy = round(screenview/2) //"origin" y
// world << "Pixel position: [x] [y]"
// to_chat(world, "Pixel position: [x] [y]")
var/angle = Atan2(y - oy, x - ox)
// world << "Angle: [angle]"
// to_chat(world, "Angle: [angle]")
src.Angle = angle
if(spread)
src.Angle += spread
+12 -4
View File
@@ -3,13 +3,14 @@
icon_state = "laser"
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
damage = 20
luminosity = 1
light_range = 2
damage_type = BURN
hitsound = 'sound/weapons/sear.ogg'
hitsound_wall = 'sound/weapons/effects/searwall.ogg'
flag = "laser"
eyeblur = 2
impact_effect_type = /obj/effect/overlay/temp/impact_effect/red_laser
light_color = LIGHT_COLOR_RED
/obj/item/projectile/beam/laser
@@ -48,6 +49,7 @@
range = 15
forcedodge = 1
impact_effect_type = /obj/effect/overlay/temp/impact_effect/green_laser
light_color = LIGHT_COLOR_GREEN
/obj/item/projectile/beam/disabler
name = "disabler beam"
@@ -58,13 +60,14 @@
hitsound = 'sound/weapons/tap.ogg'
eyeblur = 0
impact_effect_type = /obj/effect/overlay/temp/impact_effect/blue_laser
light_color = LIGHT_COLOR_BLUE
/obj/item/projectile/beam/pulse
name = "pulse"
icon_state = "u_laser"
damage = 50
luminosity = 2
impact_effect_type = /obj/effect/overlay/temp/impact_effect/blue_laser
light_color = LIGHT_COLOR_BLUE
/obj/item/projectile/beam/pulse/on_hit(atom/target, blocked = 0)
. = ..()
@@ -90,9 +93,9 @@
icon_state = "emitter"
damage = 30
legacy = 1
luminosity = 2
animate_movement = SLIDE_STEPS
impact_effect_type = /obj/effect/overlay/temp/impact_effect/green_laser
light_color = LIGHT_COLOR_GREEN
/obj/item/projectile/beam/emitter/singularity_pull()
return //don't want the emitters to miss
@@ -106,6 +109,7 @@
flag = "laser"
var/suit_types = list(/obj/item/clothing/suit/redtag, /obj/item/clothing/suit/bluetag)
impact_effect_type = /obj/effect/overlay/temp/impact_effect/blue_laser
light_color = LIGHT_COLOR_BLUE
/obj/item/projectile/beam/lasertag/on_hit(atom/target, blocked = 0)
. = ..()
@@ -119,6 +123,7 @@
icon_state = "laser"
suit_types = list(/obj/item/clothing/suit/bluetag)
impact_effect_type = /obj/effect/overlay/temp/impact_effect/red_laser
light_color = LIGHT_COLOR_RED
/obj/item/projectile/beam/lasertag/bluetag
icon_state = "bluelaser"
@@ -130,18 +135,21 @@
damage = 200
damage_type = BURN
impact_effect_type = /obj/effect/overlay/temp/impact_effect/purple_laser
light_color = LIGHT_COLOR_PURPLE
/obj/item/projectile/beam/instakill/blue
icon_state = "blue_laser"
impact_effect_type = /obj/effect/overlay/temp/impact_effect/blue_laser
light_color = LIGHT_COLOR_BLUE
/obj/item/projectile/beam/instakill/red
icon_state = "red_laser"
impact_effect_type = /obj/effect/overlay/temp/impact_effect/red_laser
light_color = LIGHT_COLOR_RED
/obj/item/projectile/beam/instakill/on_hit(atom/target)
. = ..()
if(iscarbon(target))
var/mob/living/carbon/M = target
M.visible_message("<span class='danger'>[M] explodes into a shower of gibs!</span>")
M.gib()
M.gib()
@@ -35,6 +35,12 @@
name = "pellet"
damage = 12.5
/obj/item/projectile/bullet/pellet/Range()
..()
damage += -0.75
if(damage < 0)
qdel(src)
/obj/item/projectile/bullet/pellet/weak
damage = 6
@@ -71,7 +71,7 @@
/obj/effect/nettingportal/New()
..()
SetLuminosity(3)
set_light(3)
var/obj/item/device/radio/beacon/teletarget = null
for(var/obj/machinery/computer/teleporter/com in machines)
if(com.target)
@@ -155,7 +155,7 @@
/obj/item/projectile/energy/bolt //ebow bolts
name = "bolt"
icon_state = "cbbolt"
damage = 15
damage = 8
damage_type = TOX
nodamage = 0
weaken = 5
+6 -8
View File
@@ -35,10 +35,9 @@
C.regenerate_organs()
if(target.revive(full_heal = 1))
target.grab_ghost(force = TRUE) // even suicides
target << "<span class='notice'>You rise with a start, \
you're alive!!!</span>"
to_chat(target, "<span class='notice'>You rise with a start, you're alive!!!</span>")
else if(target.stat != DEAD)
target << "<span class='notice'>You feel great!</span>"
to_chat(target, "<span class='notice'>You feel great!</span>")
/obj/item/projectile/magic/teleport
name = "bolt of teleportation"
@@ -265,20 +264,19 @@
new_mob.languages_spoken |= HUMAN
new_mob.languages_understood |= HUMAN
new_mob.attack_log = M.attack_log
new_mob.logging = M.logging
// Some forms can still wear some items
for(var/obj/item/W in contents)
new_mob.equip_to_appropriate_slot(W)
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>[M.real_name] ([M.ckey]) became [new_mob.real_name].</font>")
M.log_message("<font color='orange'>became [new_mob.real_name].</font>", INDIVIDUAL_ATTACK_LOG)
new_mob.a_intent = INTENT_HARM
M.wabbajack_act(new_mob)
new_mob << "<span class='warning'>Your form morphs into that of \
a [randomize].</span>"
to_chat(new_mob, "<span class='warning'>Your form morphs into that of a [randomize].</span>")
qdel(M)
return new_mob
@@ -312,7 +310,7 @@
if(L.mind)
L.mind.transfer_to(S)
if(owner)
S << "<span class='userdanger'>You are an animate statue. You cannot move when monitored, but are nearly invincible and deadly when unobserved! Do not harm [owner], your creator.</span>"
to_chat(S, "<span class='userdanger'>You are an animate statue. You cannot move when monitored, but are nearly invincible and deadly when unobserved! Do not harm [owner], your creator.</span>")
P.loc = S
return
else
@@ -8,6 +8,8 @@ obj/item/projectile/energy/plasmabolt
hitsound = 'sound/weapons/sear.ogg'
hitsound_wall = 'sound/weapons/effects/searwall.ogg'
impact_effect_type = /obj/effect/overlay/temp/impact_effect/green_laser
light_range = 3
light_color = LIGHT_COLOR_GREEN
/obj/item/projectile/energy/plasmabolt/light
damage = 35