Stackable items redo. Many improvements, massive code clean up.

Metal and related materials now noticeable more user-friendly.
Added new canister color: yellow "CAUTION". Used for newly created from metal canisters. Can be relabeled once.
Some typos were fixed.
dsay verb now uses fakekey in stealth mode.
AI cannot remove the cell from the charger.
Added alientalk chat prefix: ":a" by Barhandar. Also added keyboard layout independent russian prefixes.
Binary translator done by more convenient may by Barhandar.
Is possible now to wash bloody hands in sink.
Probably fixed bug causes gibbed revheads be not counted as dead.
Some other fixes.


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@752 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
rastaf.zero@gmail.com
2011-01-03 01:26:01 +00:00
parent 565c2320c4
commit 09e0bcf987
51 changed files with 1138 additions and 1404 deletions
+1 -2
View File
@@ -2,8 +2,7 @@
/obj/item/apc_frame/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (istype(W, /obj/item/weapon/wrench))
var/obj/item/weapon/sheet/metal/M = new /obj/item/weapon/sheet/metal( src.loc )
M.amount = 2
new /obj/item/stack/sheet/metal( src.loc, 2 )
del(src)
/obj/item/apc_frame/proc/try_build(turf/on_wall)
+5 -10
View File
@@ -71,18 +71,13 @@
return 0
/obj/item/robot_parts/robot_suit/attackby(obj/item/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/sheet/metal))
if(istype(W, /obj/item/stack/sheet/metal))
var/obj/item/weapon/ed209_assembly/B = new /obj/item/weapon/ed209_assembly
B.loc = user
if (user.r_hand == W)
user.u_equip(W)
user.r_hand = B
else
user.u_equip(W)
user.l_hand = B
B.layer = 20
user << "You armed the robot frame"
del(W)
W:use(1)
if (user.get_inactive_hand()==src)
user.before_take_item(src)
user.put_in_inactive_hand(B)
del(src)
if(istype(W, /obj/item/robot_parts/l_leg))
user.drop_item()
@@ -21,7 +21,7 @@ GETLINEEEEEEEEEEEEEEEEEEEEE
var/lit = 0 //on or off
var/turf/previousturf = null
var/obj/item/weapon/weldingtool/part1 = null
var/obj/item/weapon/rods/part2 = null
var/obj/item/stack/rods/part2 = null
var/obj/item/device/igniter/part3 = null
var/obj/item/weapon/tank/plasma/part4 = null
m_amt = 500
@@ -155,7 +155,7 @@ GETLINEEEEEEEEEEEEEEEEEEEEE
if(isturf(location)) //start a fire if possible
location.hotspot_expose(700, 2)
/obj/item/weapon/flamethrower/attackby(obj/item/weapon/tank/plasma/W as obj, mob/user as mob)
/obj/item/weapon/flamethrower/attackby(obj/item/W as obj, mob/user as mob)
if(user.stat || user.restrained() || user.lying)
return
if (istype(W,/obj/item/weapon/tank/plasma))
-278
View File
@@ -1,278 +0,0 @@
/*
CONTAINS:
GLASS SHEET
REINFORCED GLASS SHEET
SHARDS
*/
/obj/item/weapon/sheet/glass/attack_hand(mob/user as mob)
if ((user.r_hand == src || user.l_hand == src))
src.add_fingerprint(user)
var/obj/item/weapon/sheet/glass/F = new /obj/item/weapon/sheet/glass( user )
F.amount = 1
src.amount--
if (user.hand)
user.l_hand = F
else
user.r_hand = F
F.layer = 20
F.add_fingerprint(user)
if (src.amount < 1)
//SN src = null
del(src)
return
else
..()
src.force = 5
return
/obj/item/weapon/sheet/glass/attackby(obj/item/weapon/W, mob/user)
if ( istype(W, /obj/item/weapon/sheet/glass) )
var/obj/item/weapon/sheet/glass/G = W
if (G.amount >= MAX_STACK_AMOUNT_GLASS)
return
if (G.amount + src.amount > MAX_STACK_AMOUNT_GLASS)
src.amount = G.amount + src.amount - MAX_STACK_AMOUNT_GLASS
G.amount = MAX_STACK_AMOUNT_GLASS
else
G.amount += src.amount
//SN src = null
del(src)
return
return
else if( istype(W, /obj/item/weapon/rods) )
var/obj/item/weapon/rods/V = W
var/obj/item/weapon/sheet/rglass/R = new /obj/item/weapon/sheet/rglass(user.loc)
R.loc = user.loc
R.add_fingerprint(user)
if(V.amount == 1)
if(user.client)
user.client.screen -= V
user.u_equip(W)
del(W)
else
V.amount--
if(src.amount == 1)
if(user.client)
user.client.screen -= src
user.u_equip(src)
del(src)
else
src.amount--
return
/obj/item/weapon/sheet/glass/examine()
set src in view(1)
..()
usr << text("There are [] glass sheet\s on the stack.", src.amount)
return
/obj/item/weapon/sheet/glass/attack_self(mob/user as mob)
if (!( istype(usr.loc, /turf/simulated) ))
return
if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey")
usr << "\red You don't have the dexterity to do this!"
return
switch(alert("Sheet-Glass", "Would you like full tile glass or one direction?", "one direct", "full (2 sheets)", "cancel", null))
if("one direct")
var/go = 1
for (var/obj/window/win in usr.loc)
if(win.ini_dir == NORTHWEST || win.ini_dir == NORTHEAST || win.ini_dir == SOUTHWEST || win.ini_dir == SOUTHEAST)
go = 0
if(go)
var/obj/window/W = new /obj/window( usr.loc )
W.anchored = 0
if (src.amount < 1)
return
src.amount--
else usr << "Can't let you do that."
if("full (2 sheets)")
var/go = 1
for (var/obj/window/win in usr.loc)
if(win)
go = 0
if (go)
if (src.amount < 2)
return
src.amount -= 2
var/obj/window/W = new /obj/window( usr.loc )
W.dir = SOUTHWEST
W.ini_dir = SOUTHWEST
W.anchored = 0
else usr << "Can't let you do that."
else
if (src.amount <= 0)
user.u_equip(src)
del(src)
return
return
// REINFORCED GLASS
/obj/item/weapon/sheet/rglass/attack_hand(mob/user as mob)
if ((user.r_hand == src || user.l_hand == src))
src.add_fingerprint(user)
var/obj/item/weapon/sheet/rglass/F = new /obj/item/weapon/sheet/rglass( user )
F.amount = 1
src.amount--
if (user.hand)
user.l_hand = F
else
user.r_hand = F
F.layer = 20
F.add_fingerprint(user)
if (src.amount < 1)
//SN src = null
del(src)
return
else
..()
src.force = 5
return
/obj/item/weapon/sheet/rglass/attackby(obj/item/weapon/sheet/rglass/W as obj, mob/user as mob)
if (!( istype(W, /obj/item/weapon/sheet/rglass) ))
return
if (W.amount >= MAX_STACK_AMOUNT_GLASS)
return
if (W.amount + src.amount > MAX_STACK_AMOUNT_GLASS)
src.amount = W.amount + src.amount - MAX_STACK_AMOUNT_GLASS
W.amount = MAX_STACK_AMOUNT_GLASS
else
W.amount += src.amount
del(src)
return
return
/obj/item/weapon/sheet/rglass/examine()
set src in view(1)
..()
usr << text("There are [] reinforced glass sheet\s on the stack.", src.amount)
return
/obj/item/weapon/sheet/rglass/attack_self(mob/user as mob)
if (!istype(usr.loc, /turf/simulated))
return
if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey")
usr << "\red You don't have the dexterity to do this!"
return
switch(alert("Sheet Reinf. Glass", "Would you like full tile glass or one direction?", "one direct", "full (2 sheets)", "cancel", null))
if("one direct")
var/go = 1
for (var/obj/window/win in usr.loc)
if(win.ini_dir == NORTHWEST || win.ini_dir == NORTHEAST || win.ini_dir == SOUTHWEST || win.ini_dir == SOUTHEAST)
go = 0
if(go)
var/obj/window/W = new /obj/window( usr.loc, 1 )
W.anchored = 0
W.state = 0
if (src.amount < 1)
return
src.amount--
else usr << "Can't let you do that."
if("full (2 sheets)")
var/go = 1
for (var/obj/window/win in usr.loc)
if(win)
go = 0
if(go)
if (src.amount < 2)
return
src.amount -= 2
var/obj/window/W = new /obj/window( usr.loc, 1 )
W.dir = SOUTHWEST
W.ini_dir = SOUTHWEST
W.anchored = 0
W.state = 0
else usr << "Can't let you do that."
else
if (src.amount <= 0)
user.u_equip(src)
//SN src = null
del(src)
return
return
// SHARDS
/obj/item/weapon/shard/Bump()
spawn( 0 )
if (prob(20))
src.force = 15
else
src.force = 4
..()
return
return
/obj/item/weapon/shard/New()
//****RM
//world<<"New shard at [x],[y],[z]"
src.icon_state = pick("large", "medium", "small")
switch(src.icon_state)
if("small")
src.pixel_x = rand(1, 18)
src.pixel_y = rand(1, 18)
if("medium")
src.pixel_x = rand(1, 16)
src.pixel_y = rand(1, 16)
if("large")
src.pixel_x = rand(1, 10)
src.pixel_y = rand(1, 5)
else
return
/obj/item/weapon/shard/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (!( istype(W, /obj/item/weapon/weldingtool) && W:welding ))
return
W:eyecheck(user)
new /obj/item/weapon/sheet/glass( user.loc )
//SN src = null
del(src)
return
/obj/item/weapon/shard/HasEntered(AM as mob|obj)
if(ismob(AM))
var/mob/M = AM
M << "\red <B>You step in the broken glass!</B>"
playsound(src.loc, 'glass_step.ogg', 50, 1)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(!H.shoes)
var/datum/organ/external/affecting = H.organs[pick("l_foot", "r_foot")]
H.weakened = max(3, H.weakened)
affecting.take_damage(5, 0)
H.UpdateDamageIcon()
H.updatehealth()
..()
@@ -1,466 +0,0 @@
/*
CONTAINS:
RODS
METAL
REINFORCED METAL
LATTICE
*/
// RODS
/obj/item/weapon/rods/examine()
set src in view(1)
..()
usr << text("There are [] rod\s left on the stack.", src.amount)
return
/obj/item/weapon/rods/attack_hand(mob/user as mob)
if ((user.r_hand == src || user.l_hand == src))
src.add_fingerprint(user)
var/obj/item/weapon/rods/F = new /obj/item/weapon/rods( user )
F.amount = 1
src.amount--
if (user.hand)
user.l_hand = F
else
user.r_hand = F
F.layer = 20
F.add_fingerprint(user)
if (src.amount < 1)
//SN src = null
del(src)
return
else
..()
return
/obj/item/weapon/rods/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (istype(W, /obj/item/weapon/weldingtool) && W:welding)
if(amount < 2)
user << "\blue You need at least two rods to do this."
return
if (W:get_fuel() < 2)
user << "\blue You need more welding fuel to complete this task."
return
W:eyecheck(user)
W:use_fuel(2)
new /obj/item/weapon/sheet/metal(usr.loc)
for (var/mob/M in viewers(src))
M.show_message("\red [src] is shaped into metal by [user.name] with the weldingtool.", 3, "\red You hear welding.", 2)
amount -= 2
if(amount == 0)
del(src)
return
if (istype(W, /obj/item/weapon/rods))
if (W:amount == MAX_STACK_AMOUNT_RODS)
return
if (W:amount + src:amount > MAX_STACK_AMOUNT_RODS)
src.amount = W:amount + src:amount - MAX_STACK_AMOUNT_RODS
W:amount = MAX_STACK_AMOUNT_RODS
else
W:amount += src:amount
//SN src = null
del(src)
return
return
/obj/item/weapon/rods/attack_self(mob/user as mob)
if (locate(/obj/grille, usr.loc))
for(var/obj/grille/G in usr.loc)
if (G.destroyed)
G.health = 10
G.density = 1
G.destroyed = 0
G.icon_state = "grille"
src.amount--
else
else
if (src.amount < 2)
return
src.amount -= 2
new /obj/grille( usr.loc )
if (src.amount < 1)
del(src)
return
src.add_fingerprint(user)
return
// METAL SHEET
/obj/item/weapon/sheet/metal/examine()
set src in view(1)
..()
usr << text("There are [] metal sheet\s on the stack.", src.amount)
return
/obj/item/weapon/sheet/metal/attack_hand(mob/user as mob)
if ((user.r_hand == src || user.l_hand == src))
src.add_fingerprint(user)
var/obj/item/weapon/sheet/metal/F = new /obj/item/weapon/sheet/metal( user )
F.amount = 1
src.amount--
if (user.hand)
user.l_hand = F
else
user.r_hand = F
F.layer = 20
F.add_fingerprint(user)
if (src.amount < 1)
del(src)
return
else
..()
src.force = 5
return
/obj/item/weapon/sheet/metal/attackby(obj/item/weapon/sheet/metal/W as obj, mob/user as mob)
if (!( istype(W, /obj/item/weapon/sheet/metal) ))
return
if (W.amount >= MAX_STACK_AMOUNT_METAL)
return
if (W.amount + src.amount > MAX_STACK_AMOUNT_METAL)
src.amount = W.amount + src.amount - MAX_STACK_AMOUNT_METAL
W.amount = MAX_STACK_AMOUNT_METAL
else
W.amount += src.amount
//SN src = null
del(src)
return
return
/obj/item/weapon/sheet/metal/attack_self(mob/user as mob)
var/t1 = text("<HTML><HEAD></HEAD><TT>Amount Left: [] <BR>", src.amount)
var/list/L = list( )
L["stool"] = "stool"
L["chair"] = "chair"
L["bed"] = "bed (2 metal)<BR>"
L["table"] = "table parts (2 metal)"
L["rack"] = "rack parts<BR>"
L["aircan"] = "air canister (2 metal)"
L["o2can"] = "oxygen canister (2 metal)"
L["carboncan"] = "co2 canister (2 metal)"
L["plcan"] = "plasma canister (2 metal)"
L["n2can"] = "n2 canister (2 metal)"
L["n2ocan"] = "n2o canister (2 metal)"
L["closet"] = "closet (2 metal)<BR>"
L["fl_tiles"] = "4x floor tiles"
L["rods"] = "2x metal rods"
L["casing"] = "grenade casing (1 metal)"
L["reinforced"] = "reinforced sheet (2 metal)<BR>"
L["computer"] = "computer frame (5 metal)<BR>"
L["construct"] = "construct wall girders (2 metal)"
L["airlock"] = "construct airlock assembly (4 metal)"
L["apc_frame"] = "construct apc frame (2 metal)"
for(var/t in L)
t1 += text("<A href='?src=\ref[];make=[]'>[]</A> ", src, t, L[t])
t1 += "<BR>"
t1 += "</TT></HTML>"
user << browse(t1, "window=met_sheet")
onclose(user, "met_sheet")
return
/obj/item/weapon/sheet/metal/Topic(href, href_list)
..()
if ((usr.restrained() || usr.stat || usr.equipped() != src))
return
if (href_list["make"])
if (src.amount < 1)
//SN src = null
del(src)
return
switch(href_list["make"])
if("rods")
src.amount--
var/obj/item/weapon/rods/R = new /obj/item/weapon/rods( usr.loc )
R.amount = 2
if("table")
if (src.amount < 2)
usr << text("\red You haven't got enough metal to build the table parts!")
return
src.amount -= 2
new /obj/item/weapon/table_parts( usr.loc )
if("stool")
src.amount--
new /obj/stool( usr.loc )
if("chair")
src.amount--
var/obj/stool/chair/C = new /obj/stool/chair( usr.loc )
C.dir = usr.dir
if (C.dir == NORTH)
C.layer = 5
if("rack")
src.amount--
new /obj/item/weapon/rack_parts( usr.loc )
if("aircan")
if (src.amount < 2)
usr << text("\red You haven't got enough metal to build the canister!")
return
src.amount -= 2
var/obj/machinery/portable_atmospherics/canister/C = new /obj/machinery/portable_atmospherics/canister(usr.loc)
C.color = "grey"
C.icon_state = "grey"
if("o2can")
if (src.amount < 2)
usr << text("\red You haven't got enough metal to build the canister!")
return
src.amount -= 2
var/obj/machinery/portable_atmospherics/canister/C = new /obj/machinery/portable_atmospherics/canister(usr.loc)
C.color = "blue"
C.icon_state = "blue"
if("carboncan")
if (src.amount < 2)
usr << text("\red You haven't got enough metal to build the canister!")
return
src.amount -= 2
var/obj/machinery/portable_atmospherics/canister/C = new /obj/machinery/portable_atmospherics/canister(usr.loc)
C.color = "black"
C.icon_state = "black"
if("plcan")
if (src.amount < 2)
usr << text("\red You haven't got enough metal to build the canister!")
return
src.amount -= 2
var/obj/machinery/portable_atmospherics/canister/C = new /obj/machinery/portable_atmospherics/canister(usr.loc)
C.color = "orange"
C.icon_state = "orange"
if("n2can")
if (src.amount < 2)
usr << text("\red You haven't got enough metal to build the canister!")
return
src.amount -= 2
var/obj/machinery/portable_atmospherics/canister/C = new /obj/machinery/portable_atmospherics/canister(usr.loc)
C.color = "red"
C.icon_state = "red"
if("n2ocan")
if (src.amount < 2)
usr << text("\red You haven't got enough metal to build the canister!")
return
src.amount -= 2
var/obj/machinery/portable_atmospherics/canister/C = new /obj/machinery/portable_atmospherics/canister(usr.loc)
C.color = "redws"
C.icon_state = "redws"
if("reinforced")
if (src.amount < 2)
usr << text("\red You haven't got enough metal to build the reinforced sheet!")
return
src.amount -= 2
var/obj/item/weapon/sheet/r_metal/C = new /obj/item/weapon/sheet/r_metal( usr.loc )
C.amount = 1
if("casing")
if (src.amount < 1) //Not possible!
usr << text("\red You haven't got enough metal to create the grenade casing!")
return
src.amount--
new /obj/item/weapon/chem_grenade( usr.loc )
if("closet")
if (src.amount < 2)
usr << text("\red You haven't got enough metal to build the reinforced closet!")
return
src.amount -= 2
new /obj/closet( usr.loc )
if("fl_tiles")
src.amount--
var/obj/item/weapon/tile/R = new /obj/item/weapon/tile( usr.loc )
R.amount = 4
if("bed")
if (src.amount < 2)
usr << text("\red You haven't got enough metal to build the bed!")
return
src.amount -= 2
new /obj/stool/bed( usr.loc )
if("computer")
if(src.amount < 5)
usr << text("\red You haven't got enough metal to build the computer frame!")
return
src.amount -= 5
new /obj/computerframe( usr.loc )
if("construct")
if (src.amount < 2)
usr << text("\red You haven't got enough metal to construct the wall girders!")
return
usr << "\blue Building wall girders ..."
var/turf/location = usr.loc
sleep(50)
if ((usr.loc == location))
if (!istype(location, /turf/simulated/floor))
return
src.amount -= 2
new /obj/structure/girder(location)
if("airlock")
if (src.amount < 4)
usr << text("\red You haven't got enough metal to construct the airlock assembly!")
return
usr << "\blue Building airlock assembly ..."
var/turf/location = usr.loc
sleep(50)
if ((usr.loc == location))
if (!istype(location, /turf/simulated/floor))
return
src.amount -= 4
new /obj/door_assembly(location)
if("apc_frame")
if (src.amount < 2)
usr << text("\red You haven't got enough metal to build the APC frame!")
return
src.amount -= 2
new /obj/item/apc_frame(usr.loc)
if (src.amount <= 0)
usr << browse(null, "window=met_sheet")
onclose(usr, "met_sheet")
usr.u_equip(src)
del(src)
return
spawn( 0 )
src.attack_self(usr)
return
return
// REINFORCED METAL SHEET
/obj/item/weapon/sheet/r_metal/attackby(obj/item/weapon/sheet/r_metal/W as obj, mob/user as mob)
if (!( istype(W, /obj/item/weapon/sheet/r_metal) ))
return
if (W.amount >= MAX_STACK_AMOUNT_METAL)
return
if (W.amount + src.amount > MAX_STACK_AMOUNT_METAL)
src.amount = W.amount + src.amount - MAX_STACK_AMOUNT_METAL
W.amount = MAX_STACK_AMOUNT_METAL
else
W.amount += src.amount
//SN src = null
del(src)
return
return
/obj/item/weapon/sheet/r_metal/attack_self(mob/user as mob)
var/t1 = text("<HTML><HEAD></HEAD><TT>Amount Left: [] <BR>", src.amount)
var/list/L = list( )
L["table"] = "table parts (2 metal)"
L["metal"] = "2x metal sheet (1 metal)<BR>"
L["core"] = "AI core (4 metal)"
for(var/t in L)
t1 += text("<A href='?src=\ref[];make=[]'>[]</A> ", src, t, L[t])
t1 += "<BR>"
t1 += "</TT></HTML>"
user << browse(t1, "window=met_sheet")
onclose(user, "met_sheet")
return
/obj/item/weapon/sheet/r_metal/Topic(href, href_list)
..()
if ((usr.restrained() || usr.stat || usr.equipped() != src))
return
if (href_list["make"])
if (src.amount < 1)
//SN src = null
del(src)
return
switch(href_list["make"])
if("table")
if (src.amount < 2)
usr << text("\red You haven't got enough metal to build the reinforced table parts!")
return
src.amount -= 2
new /obj/item/weapon/table_parts/reinforced( usr.loc )
if("metal")
if (src.amount < 1)
usr << text("\red You haven't got enough metal to build the metal sheets!")
return
src.amount -= 1
var/obj/item/weapon/sheet/metal/C = new /obj/item/weapon/sheet/metal( usr.loc )
C.amount = 2
if("core")
if (src.amount < 4)
usr << text("\red You haven't got enough metal to build the metal sheets!")
return
src.amount -= 4
new /obj/AIcore( usr.loc )
if (src.amount <= 0)
usr << browse(null, "window=met_sheet")
onclose(usr, "met_sheet")
usr.u_equip(src)
del(src)
return
spawn( 0 )
src.attack_self(usr)
return
return
// LATTICE????
/obj/lattice/blob_act()
del(src)
return
/obj/lattice/ex_act(severity)
switch(severity)
if(1.0)
del(src)
return
if(2.0)
del(src)
return
if(3.0)
return
else
return
/obj/lattice/attackby(obj/item/weapon/C as obj, mob/user as mob)
if (istype(C, /obj/item/weapon/tile))
C:build(get_turf(src))
C:amount--
playsound(src.loc, 'Genhit.ogg', 50, 1)
C.add_fingerprint(user)
if (C:amount < 1)
user.u_equip(C)
del(C)
del(src)
return
if (istype(C, /obj/item/weapon/weldingtool) && C:welding)
user << "\blue Slicing lattice joints ..."
C:eyecheck(user)
new /obj/item/weapon/rods(src.loc)
del(src)
return
@@ -11,7 +11,7 @@ RACK PARTS
/obj/item/weapon/table_parts/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (istype(W, /obj/item/weapon/wrench))
new /obj/item/weapon/sheet/metal( src.loc )
new /obj/item/stack/sheet/metal( src.loc )
//SN src = null
del(src)
@@ -40,7 +40,7 @@ RACK PARTS
// REINFORCED TABLE PARTS
/obj/item/weapon/table_parts/reinforced/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (istype(W, /obj/item/weapon/wrench))
new /obj/item/weapon/sheet/r_metal( src.loc )
new /obj/item/stack/sheet/r_metal( src.loc )
//SN src = null
del(src)
@@ -70,7 +70,7 @@ RACK PARTS
// RACK PARTS
/obj/item/weapon/rack_parts/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (istype(W, /obj/item/weapon/wrench))
new /obj/item/weapon/sheet/metal( src.loc )
new /obj/item/stack/sheet/metal( src.loc )
del(src)
return
return
@@ -26,86 +26,3 @@ TILES
return
// TILES
/obj/item/weapon/tile/New()
src.pixel_x = rand(1, 14)
src.pixel_y = rand(1, 14)
return
/obj/item/weapon/tile/examine()
set src in view(1)
..()
usr << text("There are [] tile\s left on the stack.", src.amount)
return
/obj/item/weapon/tile/attack_hand(mob/user as mob)
if ((user.r_hand == src || user.l_hand == src))
src.add_fingerprint(user)
var/obj/item/weapon/tile/F = new /obj/item/weapon/tile( user )
F.amount = 1
src.amount--
if (user.hand)
user.l_hand = F
else
user.r_hand = F
F.layer = 20
F.add_fingerprint(user)
if (src.amount < 1)
//SN src = null
del(src)
return
else
..()
return
/obj/item/weapon/tile/attack_self(mob/user as mob)
if (usr.stat)
return
var/T = user.loc
if (!( istype(T, /turf) ))
user << "\blue You must be on the ground!"
return
else
var/S = T
if (!( istype(S, /turf/space) ))
user << "You cannot build on or repair this turf!"
return
else
src.build(S)
src.amount--
if (src.amount < 1)
user.u_equip(src)
//SN src = null
del(src)
return
src.add_fingerprint(user)
return
/obj/item/weapon/tile/attackby(obj/item/weapon/tile/W as obj, mob/user as mob)
if (!( istype(W, /obj/item/weapon/tile) ))
return
if (W.amount == 10)
return
W.add_fingerprint(user)
if (W.amount + src.amount > 10)
src.amount = W.amount + src.amount - 10
W.amount = 10
else
W.amount += src.amount
//SN src = null
del(src)
return
return
/obj/item/weapon/tile/proc/build(turf/S as turf)
var/turf/simulated/floor/W = S.ReplaceWithFloor()
W.to_plating()
return
+13 -13
View File
@@ -88,15 +88,17 @@ WELDINGTOOOL
usr << text("\icon[] [] contains [] units of fuel left!", src, src.name, get_fuel() )
return
/obj/item/weapon/weldingtool/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (status == 0 && istype(W,/obj/item/weapon/screwdriver))
status = 1
user << "\blue The welder can now be attached and modified."
else if (status == 1 && istype(W,/obj/item/weapon/rods))
var/obj/item/weapon/rods/R = W
R.amount = R.amount - 1
if (R.amount == 0)
del(R)
/obj/item/weapon/weldingtool/attackby(obj/item/W as obj, mob/user as mob)
if (istype(W,/obj/item/weapon/screwdriver))
status = !status
if (status)
user << "\blue You resecure the welder."
else
user << "\blue The welder can now be attached and modified."
src.add_fingerprint(user)
else if (status == 1 && istype(W,/obj/item/stack/rods))
var/obj/item/stack/rods/R = W
R.use(1)
var/obj/item/assembly/weld_rod/F = new /obj/item/assembly/weld_rod( user )
src.loc = F
F.part1 = src
@@ -120,10 +122,8 @@ WELDINGTOOOL
R.layer = 20
F.loc = user
src.add_fingerprint(user)
else if (status == 1 && istype(W,/obj/item/weapon/screwdriver))
status = 0
user << "\blue You resecure the welder."
return
else
..()
// helper functions for weldingtool fuel use