mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-19 18:18:41 +01:00
Added Seraph exosuit. A command-type marauder with slightly better stats and different equipment. Found in CentCom. Changed Marauder access to centcom special ops. Marauders now come equipped with an armor booster module. When entering exosuits, the exosuit will now face in the appropriate direction. Affects Durand, Gygax, and Phazon. Minor changes to CentCom. Fixed a minor bug with respawn character. It should no longer report character destroyed for object completion for brand-new characters. Fixed gas mask icons for monkeys. Nerfed monkey vent crawling. Monkey needs to be naked to crawl through vents. And not hold anything in their hands/paws. Merged CentCom with z-level 6 (hand tele adjusted for z level 2). Deleted ship building docks since they are not used. Z-level 6 left empty. Detectives can now name their gun. Right click to use the verb, when holding the item. Energy swords/cutlasses will properly change icons now when activated or deactivated. Same with energy axes. Changed some melee weapon paths a bit to accomodate this (and so they're easier to track). Replaced cigar icons with sprites by Matty. Made matches smaller. Added a welder and assassin costumes to admin equip list. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1741 316c924e-a436-60f5-8080-3fe189b3f50e
331 lines
8.8 KiB
Plaintext
331 lines
8.8 KiB
Plaintext
/*
|
|
CONTAINS:
|
|
TABLE AND RACK OBJECT INTERATIONS
|
|
*/
|
|
|
|
|
|
//TABLE
|
|
/obj/table/ex_act(severity)
|
|
|
|
switch(severity)
|
|
if(1.0)
|
|
//SN src = null
|
|
del(src)
|
|
return
|
|
if(2.0)
|
|
if (prob(50))
|
|
//SN src = null
|
|
del(src)
|
|
return
|
|
if(3.0)
|
|
if (prob(25))
|
|
src.density = 0
|
|
else
|
|
return
|
|
|
|
/obj/table/blob_act()
|
|
|
|
if(prob(75))
|
|
new /obj/item/weapon/table_parts( src.loc )
|
|
del(src)
|
|
|
|
/obj/table/hand_p(mob/user as mob)
|
|
|
|
return src.attack_paw(user)
|
|
return
|
|
|
|
/obj/table/attack_paw(mob/user as mob)
|
|
if ((usr.mutations & HULK))
|
|
usr << text("\blue You destroy the table.")
|
|
for(var/mob/O in oviewers())
|
|
if ((O.client && !( O.blinded )))
|
|
O << text("\red [] smashes the table apart!", usr)
|
|
if(istype(src, /obj/table/reinforced))
|
|
new /obj/item/weapon/table_parts/reinforced( src.loc )
|
|
else if(istype(src, /obj/table/woodentable))
|
|
new/obj/item/weapon/table_parts/wood( src.loc )
|
|
else
|
|
new /obj/item/weapon/table_parts( src.loc )
|
|
src.density = 0
|
|
del(src)
|
|
if (!( locate(/obj/table, user.loc) ))
|
|
step(user, get_dir(user, src))
|
|
if (user.loc == src.loc)
|
|
user.layer = TURF_LAYER
|
|
for(var/mob/O in oviewers())
|
|
if ((O.client && !( O.blinded )))
|
|
O << text("[] hides under the table!", user)
|
|
//Foreach goto(69)
|
|
return
|
|
|
|
/obj/table/attack_alien(mob/user as mob) //Removed code for larva since it doesn't work. Previous code is now a larva ability. /N
|
|
usr << text("\green You destroy the table.")
|
|
for(var/mob/O in oviewers())
|
|
if ((O.client && !( O.blinded )))
|
|
O << text("\red [] slices the table apart!", user)
|
|
if(istype(src, /obj/table/reinforced))
|
|
new /obj/item/weapon/table_parts/reinforced( src.loc )
|
|
else if(istype(src, /obj/table/woodentable))
|
|
new/obj/item/weapon/table_parts/wood( src.loc )
|
|
else
|
|
new /obj/item/weapon/table_parts( src.loc )
|
|
src.density = 0
|
|
del(src)
|
|
return
|
|
|
|
/obj/table/attack_hand(mob/user as mob)
|
|
if ((usr.mutations & HULK))
|
|
usr << text("\blue You destroy the table.")
|
|
for(var/mob/O in oviewers())
|
|
if ((O.client && !( O.blinded )))
|
|
O << text("\red [] smashes the table apart!", usr)
|
|
if(istype(src, /obj/table/reinforced))
|
|
new /obj/item/weapon/table_parts/reinforced( src.loc )
|
|
else if(istype(src, /obj/table/woodentable))
|
|
new/obj/item/weapon/table_parts/wood( src.loc )
|
|
else
|
|
new /obj/item/weapon/table_parts( src.loc )
|
|
src.density = 0
|
|
del(src)
|
|
return
|
|
|
|
|
|
|
|
/obj/table/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
|
if(air_group || (height==0)) return 1
|
|
|
|
if(istype(mover) && mover.checkpass(PASSTABLE))
|
|
return 1
|
|
else
|
|
return 0
|
|
|
|
/obj/table/MouseDrop_T(obj/O as obj, mob/user as mob)
|
|
|
|
if ((!( istype(O, /obj/item/weapon) ) || user.equipped() != O))
|
|
return
|
|
if(isrobot(user))
|
|
return
|
|
user.drop_item()
|
|
if (O.loc != src.loc)
|
|
step(O, get_dir(O, src))
|
|
return
|
|
|
|
/obj/table/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
|
|
if (istype(W, /obj/item/weapon/grab) && get_dist(src,user)<2)
|
|
var/obj/item/weapon/grab/G = W
|
|
if(G.state<2)
|
|
user << "\red You need a better grip to do that!"
|
|
return
|
|
G.affecting.loc = src.loc
|
|
G.affecting.weakened = 5
|
|
for(var/mob/O in viewers(world.view, src))
|
|
if (O.client)
|
|
O << text("\red [] puts [] on the table.", G.assailant, G.affecting)
|
|
del(W)
|
|
return
|
|
|
|
if (istype(W, /obj/item/weapon/wrench))
|
|
user << "\blue Now disassembling table"
|
|
playsound(src.loc, 'Ratchet.ogg', 50, 1)
|
|
sleep(50)
|
|
new /obj/item/weapon/table_parts( src.loc )
|
|
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
|
//SN src = null
|
|
del(src)
|
|
return
|
|
|
|
if(isrobot(user))
|
|
return
|
|
|
|
if(istype(W, /obj/item/weapon/melee/energy/blade))
|
|
var/datum/effects/system/spark_spread/spark_system = new /datum/effects/system/spark_spread()
|
|
spark_system.set_up(5, 0, src.loc)
|
|
spark_system.start()
|
|
playsound(src.loc, 'blade1.ogg', 50, 1)
|
|
playsound(src.loc, "sparks", 50, 1)
|
|
for(var/mob/O in viewers(user, 4))
|
|
O.show_message(text("\blue The table was sliced apart by []!", user), 1, text("\red You hear metal coming apart."), 2)
|
|
new /obj/item/weapon/table_parts( src.loc )
|
|
del(src)
|
|
return
|
|
|
|
user.drop_item()
|
|
if(W && W.loc) W.loc = src.loc
|
|
return
|
|
|
|
//WOODEN TABLES
|
|
/obj/table/woodentable/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
|
|
if (istype(W, /obj/item/weapon/grab))
|
|
var/obj/item/weapon/grab/G = W
|
|
if(G.state<2)
|
|
user << "\red You need a better grip to do that!"
|
|
return
|
|
G.affecting.loc = src.loc
|
|
G.affecting.weakened = 5
|
|
for(var/mob/O in viewers(world.view, src))
|
|
if (O.client)
|
|
O << text("\red [] puts [] on the wooden table.", G.assailant, G.affecting)
|
|
del(W)
|
|
return
|
|
if (istype(W, /obj/item/weapon/wrench))
|
|
user << "\blue Now disassembling the wooden table"
|
|
playsound(src.loc, 'Ratchet.ogg', 50, 1)
|
|
sleep(50)
|
|
new /obj/item/weapon/table_parts/wood( src.loc )
|
|
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
|
del(src)
|
|
return
|
|
if(isrobot(user))
|
|
return
|
|
if(istype(W, /obj/item/weapon/melee/energy/blade))
|
|
var/datum/effects/system/spark_spread/spark_system = new /datum/effects/system/spark_spread()
|
|
spark_system.set_up(5, 0, src.loc)
|
|
spark_system.start()
|
|
playsound(src.loc, 'blade1.ogg', 50, 1)
|
|
playsound(src.loc, "sparks", 50, 1)
|
|
for(var/mob/O in viewers(user, 4))
|
|
O.show_message(text("\blue The wooden table was sliced apart by []!", user), 1, text("\red You hear wood coming apart."), 2)
|
|
new /obj/item/weapon/table_parts/wood( src.loc )
|
|
del(src)
|
|
return
|
|
|
|
user.drop_item()
|
|
if(W && W.loc) W.loc = src.loc
|
|
return
|
|
|
|
//REINFORCED TABLES
|
|
/obj/table/reinforced/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
|
|
if (istype(W, /obj/item/weapon/grab))
|
|
var/obj/item/weapon/grab/G = W
|
|
if(G.state<2)
|
|
user << "\red You need a better grip to do that!"
|
|
return
|
|
G.affecting.loc = src.loc
|
|
G.affecting.weakened = 5
|
|
for(var/mob/O in viewers(world.view, src))
|
|
if (O.client)
|
|
O << text("\red [] puts [] on the reinforced table.", G.assailant, G.affecting)
|
|
del(W)
|
|
return
|
|
|
|
if (istype(W, /obj/item/weapon/weldingtool))
|
|
if(W:welding == 1)
|
|
if(src.status == 2)
|
|
W:welding = 2
|
|
user << "\blue Now weakening the reinforced table"
|
|
playsound(src.loc, 'Welder.ogg', 50, 1)
|
|
sleep(50)
|
|
user << "\blue Table weakened"
|
|
src.status = 1
|
|
W:welding = 1
|
|
else
|
|
W:welding = 2
|
|
user << "\blue Now strengthening the reinforced table"
|
|
playsound(src.loc, 'Welder.ogg', 50, 1)
|
|
sleep(50)
|
|
user << "\blue Table strengthened"
|
|
src.status = 2
|
|
W:welding = 1
|
|
return
|
|
if(isrobot(user))
|
|
return
|
|
user.drop_item()
|
|
if(W && W.loc) W.loc = src.loc
|
|
return
|
|
|
|
if (istype(W, /obj/item/weapon/wrench))
|
|
if(src.status == 1)
|
|
user << "\blue Now disassembling the reinforced table"
|
|
playsound(src.loc, 'Ratchet.ogg', 50, 1)
|
|
sleep(50)
|
|
new /obj/item/weapon/table_parts/reinforced( src.loc )
|
|
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
|
del(src)
|
|
return
|
|
if(isrobot(user))
|
|
return
|
|
|
|
if(istype(W, /obj/item/weapon/melee/energy/blade))
|
|
var/datum/effects/system/spark_spread/spark_system = new /datum/effects/system/spark_spread()
|
|
spark_system.set_up(5, 0, src.loc)
|
|
spark_system.start()
|
|
playsound(src.loc, 'blade1.ogg', 50, 1)
|
|
playsound(src.loc, "sparks", 50, 1)
|
|
for(var/mob/O in viewers(user, 4))
|
|
O.show_message(text("\blue The reinforced table was sliced apart by []!", user), 1, text("\red You hear metal coming apart."), 2)
|
|
new /obj/item/weapon/table_parts/reinforced( src.loc )
|
|
del(src)
|
|
return
|
|
|
|
user.drop_item()
|
|
if(W && W.loc) W.loc = src.loc
|
|
return
|
|
|
|
//RACKS
|
|
|
|
/obj/rack/ex_act(severity)
|
|
switch(severity)
|
|
if(1.0)
|
|
del(src)
|
|
return
|
|
if(2.0)
|
|
if (prob(50))
|
|
del(src)
|
|
return
|
|
if(3.0)
|
|
if (prob(25))
|
|
src.icon_state = "rackbroken"
|
|
src.density = 0
|
|
else
|
|
return
|
|
|
|
/obj/rack/blob_act()
|
|
if(prob(75))
|
|
del(src)
|
|
return
|
|
else if(prob(50))
|
|
src.icon_state = "rackbroken"
|
|
src.density = 0
|
|
return
|
|
|
|
/obj/rack/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
|
if(air_group || (height==0)) return 1
|
|
if(istype(mover) && mover.checkpass(PASSTABLE))
|
|
return 1
|
|
else
|
|
return 0
|
|
|
|
/obj/rack/MouseDrop_T(obj/O as obj, mob/user as mob)
|
|
if ((!( istype(O, /obj/item/weapon) ) || user.equipped() != O))
|
|
return
|
|
if(isrobot(user))
|
|
return
|
|
user.drop_item()
|
|
if (O.loc != src.loc)
|
|
step(O, get_dir(O, src))
|
|
return
|
|
|
|
/obj/rack/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
if (istype(W, /obj/item/weapon/wrench))
|
|
new /obj/item/weapon/rack_parts( src.loc )
|
|
playsound(src.loc, 'Ratchet.ogg', 50, 1)
|
|
//SN src = null
|
|
del(src)
|
|
return
|
|
if(isrobot(user))
|
|
return
|
|
user.drop_item()
|
|
if(W && W.loc) W.loc = src.loc
|
|
return
|
|
|
|
/obj/rack/meteorhit(obj/O as obj)
|
|
if(prob(75))
|
|
del(src)
|
|
return
|
|
else
|
|
src.icon_state = "rackbroken"
|
|
src.density = 0
|
|
return |