mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
The various assemblies should be working now.
Old style bombs and suicide vests temporarily removed. Players can now be job banned from being a pAI. Added null checks to explosion() due to runtime errors. Changelog updated git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1980 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
344
code/unused/Ultralight.dm
Normal file
344
code/unused/Ultralight.dm
Normal file
@@ -0,0 +1,344 @@
|
||||
//UltraLight system, by Sukasa
|
||||
|
||||
var
|
||||
const
|
||||
UL_LUMINOSITY = 0
|
||||
UL_SQUARELIGHT = 0
|
||||
|
||||
UL_RGB = 1
|
||||
UL_ROUNDLIGHT = 2
|
||||
|
||||
UL_I_FALLOFF_SQUARE = 0
|
||||
UL_I_FALLOFF_ROUND = 1
|
||||
|
||||
UL_I_LUMINOSITY = 0
|
||||
UL_I_RGB = 1
|
||||
|
||||
UL_I_LIT = 0
|
||||
UL_I_EXTINGUISHED = 1
|
||||
UL_I_ONZERO = 2
|
||||
|
||||
ul_LightingEnabled = 1
|
||||
ul_LightingResolution = 1
|
||||
ul_Steps = 7
|
||||
ul_LightingModel = UL_I_RGB
|
||||
ul_FalloffStyle = UL_I_FALLOFF_ROUND
|
||||
ul_TopLuminosity = 0
|
||||
ul_Layer = 10
|
||||
ul_SuppressLightLevelChanges = 0
|
||||
|
||||
list/ul_FastRoot = list(0, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5,
|
||||
5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
7, 7)
|
||||
|
||||
|
||||
proc
|
||||
ul_Clamp(var/Value)
|
||||
return min(max(Value, 0), ul_Steps)
|
||||
|
||||
atom
|
||||
var
|
||||
LuminosityRed = 0
|
||||
LuminosityGreen = 0
|
||||
LuminosityBlue = 0
|
||||
|
||||
ul_Extinguished = UL_I_ONZERO
|
||||
|
||||
proc
|
||||
ul_SetLuminosity(var/Red, var/Green = Red, var/Blue = Red)
|
||||
|
||||
if(LuminosityRed == Red && LuminosityGreen == Green && LuminosityBlue == Blue)
|
||||
return //No point doing all that work if it won't have any effect anyways...
|
||||
|
||||
if (ul_Extinguished == UL_I_EXTINGUISHED)
|
||||
LuminosityRed = Red
|
||||
LuminosityGreen = Green
|
||||
LuminosityBlue = Blue
|
||||
|
||||
return
|
||||
|
||||
if (ul_IsLuminous())
|
||||
ul_Extinguish()
|
||||
|
||||
LuminosityRed = Red
|
||||
LuminosityGreen = Green
|
||||
LuminosityBlue = Blue
|
||||
|
||||
ul_Extinguished = UL_I_ONZERO
|
||||
|
||||
if (ul_IsLuminous())
|
||||
ul_Illuminate()
|
||||
|
||||
return
|
||||
|
||||
ul_Illuminate()
|
||||
if (ul_Extinguished == UL_I_LIT)
|
||||
return
|
||||
|
||||
ul_Extinguished = UL_I_LIT
|
||||
|
||||
ul_UpdateTopLuminosity()
|
||||
luminosity = ul_Luminosity()
|
||||
|
||||
for(var/turf/Affected in view(ul_Luminosity(), src))
|
||||
var/Falloff = src.ul_FalloffAmount(Affected)
|
||||
|
||||
var/DeltaRed = LuminosityRed - Falloff
|
||||
var/DeltaGreen = LuminosityGreen - Falloff
|
||||
var/DeltaBlue = LuminosityBlue - Falloff
|
||||
|
||||
if(ul_IsLuminous(DeltaRed, DeltaGreen, DeltaBlue))
|
||||
|
||||
Affected.LightLevelRed += max(DeltaRed, 0)
|
||||
Affected.LightLevelGreen += max(DeltaGreen, 0)
|
||||
Affected.LightLevelBlue += max(DeltaBlue, 0)
|
||||
|
||||
Affected.MaxRed += LuminosityRed
|
||||
Affected.MaxGreen += LuminosityGreen
|
||||
Affected.MaxBlue += LuminosityBlue
|
||||
|
||||
Affected.ul_UpdateLight()
|
||||
|
||||
if (ul_SuppressLightLevelChanges == 0)
|
||||
Affected.ul_LightLevelChanged()
|
||||
|
||||
for(var/atom/AffectedAtom in Affected)
|
||||
AffectedAtom.ul_LightLevelChanged()
|
||||
return
|
||||
|
||||
ul_Extinguish()
|
||||
|
||||
if (ul_Extinguished != UL_I_LIT)
|
||||
return
|
||||
|
||||
ul_Extinguished = UL_I_EXTINGUISHED
|
||||
|
||||
for(var/turf/Affected in view(ul_Luminosity(), src))
|
||||
|
||||
var/Falloff = ul_FalloffAmount(Affected)
|
||||
|
||||
var/DeltaRed = LuminosityRed - Falloff
|
||||
var/DeltaGreen = LuminosityGreen - Falloff
|
||||
var/DeltaBlue = LuminosityBlue - Falloff
|
||||
|
||||
if(ul_IsLuminous(DeltaRed, DeltaGreen, DeltaBlue))
|
||||
|
||||
Affected.LightLevelRed -= max(DeltaRed, 0)
|
||||
Affected.LightLevelGreen -= max(DeltaGreen, 0)
|
||||
Affected.LightLevelBlue -= max(DeltaBlue, 0)
|
||||
|
||||
Affected.MaxRed -= LuminosityRed
|
||||
Affected.MaxGreen -= LuminosityGreen
|
||||
Affected.MaxBlue -= LuminosityBlue
|
||||
|
||||
Affected.ul_UpdateLight()
|
||||
|
||||
if (ul_SuppressLightLevelChanges == 0)
|
||||
Affected.ul_LightLevelChanged()
|
||||
|
||||
for(var/atom/AffectedAtom in Affected)
|
||||
AffectedAtom.ul_LightLevelChanged()
|
||||
|
||||
luminosity = 0
|
||||
|
||||
return
|
||||
|
||||
ul_FalloffAmount(var/atom/ref)
|
||||
if (ul_FalloffStyle == UL_I_FALLOFF_ROUND)
|
||||
var/x = (ref.x - src.x)
|
||||
var/y = (ref.y - src.y)
|
||||
if ((x*x + y*y) > ul_FastRoot.len)
|
||||
for(var/i = ul_FastRoot.len, i <= x*x+y*y, i++)
|
||||
ul_FastRoot += round(sqrt(x*x+y*y))
|
||||
return round(ul_LightingResolution * ul_FastRoot[x*x + y*y + 1], 1)
|
||||
|
||||
else if (ul_FalloffStyle == UL_I_FALLOFF_SQUARE)
|
||||
return get_dist(src, ref)
|
||||
|
||||
return 0
|
||||
|
||||
ul_SetOpacity(var/NewOpacity)
|
||||
if(opacity != NewOpacity)
|
||||
|
||||
var/list/Blanked = ul_BlankLocal()
|
||||
var/atom/T = src
|
||||
while(T && !isturf(T))
|
||||
T = T.loc
|
||||
|
||||
opacity = NewOpacity
|
||||
|
||||
if(T)
|
||||
T:LightLevelRed = 0
|
||||
T:LightLevelGreen = 0
|
||||
T:LightLevelBlue = 0
|
||||
|
||||
ul_UnblankLocal(Blanked)
|
||||
|
||||
return
|
||||
|
||||
ul_UnblankLocal(var/list/ReApply = view(ul_TopLuminosity, src))
|
||||
for(var/atom/Light in ReApply)
|
||||
if(Light.ul_IsLuminous())
|
||||
Light.ul_Illuminate()
|
||||
|
||||
return
|
||||
|
||||
ul_BlankLocal()
|
||||
var/list/Blanked = list( )
|
||||
var/TurfAdjust = isturf(src) ? 1 : 0
|
||||
|
||||
for(var/atom/Affected in view(ul_TopLuminosity, src))
|
||||
if(Affected.ul_IsLuminous() && Affected.ul_Extinguished == UL_I_LIT && (ul_FalloffAmount(Affected) <= Affected.luminosity + TurfAdjust))
|
||||
Affected.ul_Extinguish()
|
||||
Blanked += Affected
|
||||
|
||||
return Blanked
|
||||
|
||||
ul_UpdateTopLuminosity()
|
||||
|
||||
if (ul_TopLuminosity < LuminosityRed)
|
||||
ul_TopLuminosity = LuminosityRed
|
||||
|
||||
if (ul_TopLuminosity < LuminosityGreen)
|
||||
ul_TopLuminosity = LuminosityGreen
|
||||
|
||||
if (ul_TopLuminosity < LuminosityBlue)
|
||||
ul_TopLuminosity = LuminosityBlue
|
||||
|
||||
return
|
||||
|
||||
ul_Luminosity()
|
||||
return max(LuminosityRed, LuminosityGreen, LuminosityBlue)
|
||||
|
||||
ul_IsLuminous(var/Red = LuminosityRed, var/Green = LuminosityGreen, var/Blue = LuminosityBlue)
|
||||
return (Red > 0 || Green > 0 || Blue > 0)
|
||||
|
||||
ul_LightLevelChanged()
|
||||
//Designed for client projects to use. Called on items when the turf they are in has its light level changed
|
||||
return
|
||||
|
||||
New()
|
||||
..()
|
||||
if(ul_IsLuminous())
|
||||
spawn(1)
|
||||
ul_Illuminate()
|
||||
return
|
||||
|
||||
Del()
|
||||
if(ul_IsLuminous())
|
||||
ul_Extinguish()
|
||||
|
||||
..()
|
||||
|
||||
return
|
||||
|
||||
movable
|
||||
Move()
|
||||
ul_Extinguish()
|
||||
..()
|
||||
ul_Illuminate()
|
||||
return
|
||||
|
||||
turf
|
||||
var
|
||||
LightLevelRed = 0
|
||||
LightLevelGreen = 0
|
||||
LightLevelBlue = 0
|
||||
|
||||
list/MaxRed = list( )
|
||||
list/MaxGreen = list( )
|
||||
list/MaxBlue = list( )
|
||||
|
||||
proc
|
||||
|
||||
ul_GetRed()
|
||||
return ul_Clamp(min(LightLevelRed, max(MaxRed)))
|
||||
ul_GetGreen()
|
||||
return ul_Clamp(min(LightLevelGreen, max(MaxGreen)))
|
||||
ul_GetBlue()
|
||||
return ul_Clamp(min(LightLevelBlue, max(MaxBlue)))
|
||||
|
||||
ul_UpdateLight()
|
||||
|
||||
var/area/CurrentArea = loc
|
||||
|
||||
if(!isarea(CurrentArea) || !CurrentArea.ul_Lighting)
|
||||
return
|
||||
|
||||
var/LightingTag = copytext(CurrentArea.tag, 1, findtext(CurrentArea.tag, ":UL")) + ":UL[ul_GetRed()]_[ul_GetGreen()]_[ul_GetBlue()]"
|
||||
|
||||
if(CurrentArea.tag != LightingTag)
|
||||
var/area/NewArea = locate(LightingTag)
|
||||
|
||||
if(!NewArea)
|
||||
NewArea = new CurrentArea.type()
|
||||
NewArea.tag = LightingTag
|
||||
|
||||
for(var/V in CurrentArea.vars - "contents")
|
||||
if(issaved(CurrentArea.vars[V]))
|
||||
NewArea.vars[V] = CurrentArea.vars[V]
|
||||
|
||||
NewArea.tag = LightingTag
|
||||
|
||||
NewArea.ul_Light(ul_GetRed(), ul_GetGreen(), ul_GetBlue())
|
||||
|
||||
|
||||
NewArea.contents += src
|
||||
|
||||
return
|
||||
|
||||
ul_Recalculate()
|
||||
|
||||
ul_SuppressLightLevelChanges++
|
||||
|
||||
var/list/Lights = ul_BlankLocal()
|
||||
|
||||
LightLevelRed = 0
|
||||
LightLevelGreen = 0
|
||||
LightLevelBlue = 0
|
||||
|
||||
ul_UnblankLocal(Lights)
|
||||
|
||||
ul_SuppressLightLevelChanges--
|
||||
|
||||
return
|
||||
|
||||
area
|
||||
var
|
||||
ul_Overlay = null
|
||||
ul_Lighting = 1
|
||||
|
||||
LightLevelRed = 0
|
||||
LightLevelGreen = 0
|
||||
LightLevelBlue = 0
|
||||
|
||||
proc
|
||||
ul_Light(var/Red = LightLevelRed, var/Green = LightLevelGreen, var/Blue = LightLevelBlue)
|
||||
|
||||
if(!src || !src.ul_Lighting)
|
||||
return
|
||||
|
||||
overlays -= ul_Overlay
|
||||
|
||||
LightLevelRed = Red
|
||||
LightLevelGreen = Green
|
||||
LightLevelBlue = Blue
|
||||
|
||||
luminosity = ul_IsLuminous(LightLevelRed, LightLevelGreen, LightLevelBlue)
|
||||
|
||||
ul_Overlay = image('ULIcons.dmi', , num2text(LightLevelRed) + "-" + num2text(LightLevelGreen) + "-" + num2text(LightLevelBlue), ul_Layer)
|
||||
|
||||
overlays += ul_Overlay
|
||||
|
||||
return
|
||||
|
||||
ul_Prep()
|
||||
|
||||
if(!tag)
|
||||
tag = "[type]"
|
||||
if(ul_Lighting)
|
||||
if(!findtext(tag,":UL"))
|
||||
ul_Light()
|
||||
//world.log << tag
|
||||
|
||||
return
|
||||
951
code/unused/assemblies.dm
Normal file
951
code/unused/assemblies.dm
Normal file
@@ -0,0 +1,951 @@
|
||||
/*/obj/item/assembly
|
||||
name = "assembly"
|
||||
icon = 'assemblies.dmi'
|
||||
item_state = "assembly"
|
||||
var/status = 0.0
|
||||
throwforce = 10
|
||||
w_class = 3.0
|
||||
throw_speed = 4
|
||||
throw_range = 10
|
||||
|
||||
/obj/item/assembly/a_i_a
|
||||
name = "Health-Analyzer/Igniter/Armor Assembly"
|
||||
desc = "A health-analyzer, igniter and armor assembly."
|
||||
icon_state = "armor-igniter-analyzer"
|
||||
var/obj/item/device/healthanalyzer/part1 = null
|
||||
var/obj/item/device/igniter/part2 = null
|
||||
var/obj/item/clothing/suit/armor/vest/part3 = null
|
||||
status = null
|
||||
flags = FPRINT | TABLEPASS| CONDUCT
|
||||
|
||||
/obj/item/assembly/m_i_ptank
|
||||
desc = "A very intricate igniter and proximity sensor electrical assembly mounted onto top of a plasma tank."
|
||||
name = "Proximity/Igniter/Plasma Tank Assembly"
|
||||
icon_state = "prox-igniter-tank0"
|
||||
var/obj/item/device/prox_sensor/part1 = null
|
||||
var/obj/item/device/igniter/part2 = null
|
||||
var/obj/item/weapon/tank/plasma/part3 = null
|
||||
status = 0.0
|
||||
flags = FPRINT | TABLEPASS| CONDUCT
|
||||
|
||||
/obj/item/assembly/prox_ignite
|
||||
name = "Proximity/Igniter Assembly"
|
||||
desc = "A proximity-activated igniter assembly."
|
||||
icon_state = "prox-igniter0"
|
||||
var/obj/item/device/prox_sensor/part1 = null
|
||||
var/obj/item/device/igniter/part2 = null
|
||||
status = null
|
||||
flags = FPRINT | TABLEPASS| CONDUCT
|
||||
|
||||
/obj/item/assembly/r_i_ptank
|
||||
desc = "A very intricate igniter and signaller electrical assembly mounted onto top of a plasma tank."
|
||||
name = "Radio/Igniter/Plasma Tank Assembly"
|
||||
icon_state = "radio-igniter-tank"
|
||||
var/obj/item/device/radio/signaler/part1 = null
|
||||
var/obj/item/device/igniter/part2 = null
|
||||
var/obj/item/weapon/tank/plasma/part3 = null
|
||||
status = 0.0
|
||||
flags = FPRINT | TABLEPASS| CONDUCT
|
||||
|
||||
/obj/item/assembly/anal_ignite
|
||||
name = "Health-Analyzer/Igniter Assembly"
|
||||
desc = "A health-analyzer igniter assembly."
|
||||
icon_state = "timer-igniter0"
|
||||
var/obj/item/device/healthanalyzer/part1 = null
|
||||
var/obj/item/device/igniter/part2 = null
|
||||
status = null
|
||||
flags = FPRINT | TABLEPASS| CONDUCT
|
||||
item_state = "electronic"
|
||||
|
||||
/obj/item/assembly/time_ignite
|
||||
name = "Timer/Igniter Assembly"
|
||||
desc = "A timer-activated igniter assembly."
|
||||
icon_state = "timer-igniter0"
|
||||
var/obj/item/device/timer/part1 = null
|
||||
var/obj/item/device/igniter/part2 = null
|
||||
status = null
|
||||
flags = FPRINT | TABLEPASS| CONDUCT
|
||||
|
||||
/obj/item/assembly/t_i_ptank
|
||||
desc = "A very intricate igniter and timer assembly mounted onto top of a plasma tank."
|
||||
name = "Timer/Igniter/Plasma Tank Assembly"
|
||||
icon_state = "timer-igniter-tank0"
|
||||
var/obj/item/device/timer/part1 = null
|
||||
var/obj/item/device/igniter/part2 = null
|
||||
var/obj/item/weapon/tank/plasma/part3 = null
|
||||
status = 0.0
|
||||
flags = FPRINT | TABLEPASS| CONDUCT
|
||||
|
||||
/obj/item/assembly/rad_ignite
|
||||
name = "Radio/Igniter Assembly"
|
||||
desc = "A radio-activated igniter assembly."
|
||||
icon_state = "radio-igniter"
|
||||
var/obj/item/device/radio/signaler/part1 = null
|
||||
var/obj/item/device/igniter/part2 = null
|
||||
status = null
|
||||
flags = FPRINT | TABLEPASS| CONDUCT
|
||||
|
||||
/obj/item/assembly/rad_infra
|
||||
name = "Signaller/Infrared Assembly"
|
||||
desc = "An infrared-activated radio signaller"
|
||||
icon_state = "infrared-radio0"
|
||||
var/obj/item/device/radio/signaler/part1 = null
|
||||
var/obj/item/device/infra/part2 = null
|
||||
status = null
|
||||
flags = FPRINT | TABLEPASS| CONDUCT
|
||||
|
||||
/obj/item/assembly/rad_prox
|
||||
name = "Signaller/Prox Sensor Assembly"
|
||||
desc = "A proximity-activated radio signaller."
|
||||
icon_state = "prox-radio0"
|
||||
var/obj/item/device/radio/signaler/part1 = null
|
||||
var/obj/item/device/prox_sensor/part2 = null
|
||||
status = null
|
||||
flags = FPRINT | TABLEPASS| CONDUCT
|
||||
|
||||
/obj/item/assembly/rad_time
|
||||
name = "Signaller/Timer Assembly"
|
||||
desc = "A radio signaller activated by a count-down timer."
|
||||
icon_state = "timer-radio0"
|
||||
var/obj/item/device/radio/signaler/part1 = null
|
||||
var/obj/item/device/timer/part2 = null
|
||||
status = null
|
||||
flags = FPRINT | TABLEPASS| CONDUCT
|
||||
*/
|
||||
|
||||
/obj/item/assembly/time_ignite/premade/New()
|
||||
..()
|
||||
part1 = new(src)
|
||||
part2 = new(src)
|
||||
part1.master = src
|
||||
part2.master = src
|
||||
//part2.status = 0
|
||||
|
||||
/obj/item/assembly/time_ignite/Del()
|
||||
del(part1)
|
||||
del(part2)
|
||||
..()
|
||||
|
||||
/obj/item/assembly/time_ignite/attack_self(mob/user as mob)
|
||||
if (src.part1)
|
||||
src.part1.attack_self(user, src.status)
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/assembly/time_ignite/receive_signal()
|
||||
if (!status)
|
||||
return
|
||||
for(var/mob/O in hearers(1, src.loc))
|
||||
O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2)
|
||||
src.part2.Activate()
|
||||
return
|
||||
|
||||
/obj/decal/ash/attack_hand(mob/user as mob)
|
||||
usr << "\blue The ashes slip through your fingers."
|
||||
del(src)
|
||||
return
|
||||
|
||||
/obj/item/assembly/time_ignite/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
|
||||
var/turf/T = src.loc
|
||||
if (ismob(T))
|
||||
T = T.loc
|
||||
src.part1.loc = T
|
||||
src.part1.master = null
|
||||
src.part1 = null
|
||||
src.part2.loc = T
|
||||
src.part2.master = null
|
||||
src.part2 = null
|
||||
|
||||
del(src)
|
||||
return
|
||||
if (!( istype(W, /obj/item/weapon/screwdriver) ))
|
||||
return
|
||||
src.status = !( src.status )
|
||||
if (src.status)
|
||||
user.show_message("\blue The timer is now secured!", 1)
|
||||
else
|
||||
user.show_message("\blue The timer is now unsecured!", 1)
|
||||
src.part2.secured = src.status
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/assembly/time_ignite/c_state(n)
|
||||
src.icon_state = text("timer-igniter[]", n)
|
||||
return
|
||||
|
||||
//***********
|
||||
|
||||
/obj/item/assembly/anal_ignite/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
|
||||
var/turf/T = src.loc
|
||||
if (ismob(T))
|
||||
T = T.loc
|
||||
src.part1.loc = T
|
||||
src.part1.master = null
|
||||
src.part1 = null
|
||||
src.part2.loc = T
|
||||
src.part2.master = null
|
||||
src.part2 = null
|
||||
|
||||
del(src)
|
||||
return
|
||||
if (( istype(W, /obj/item/weapon/screwdriver) ))
|
||||
src.status = !( src.status )
|
||||
if (src.status)
|
||||
user.show_message("\blue The analyzer is now secured!", 1)
|
||||
else
|
||||
user.show_message("\blue The analyzer is now unsecured!", 1)
|
||||
src.part2.secured = src.status
|
||||
src.add_fingerprint(user)
|
||||
if(( istype(W, /obj/item/clothing/suit/armor/vest) ) && src.status)
|
||||
var/obj/item/assembly/a_i_a/R = new
|
||||
R.part1 = part1
|
||||
R.part1.master = R
|
||||
part1 = null
|
||||
|
||||
R.part2 = part2
|
||||
R.part2.master = R
|
||||
part2 = null
|
||||
|
||||
user.put_in_hand(R)
|
||||
user.before_take_item(W)
|
||||
R.part3 = W
|
||||
R.part3.master = R
|
||||
del(src)
|
||||
|
||||
/* WTF THIS SHIT? It is working? Shouldn't. --rastaf0
|
||||
W.loc = R
|
||||
R.part1 = W
|
||||
R.part2 = W
|
||||
W.layer = initial(W.layer)
|
||||
if (user.client)
|
||||
user.client.screen -= W
|
||||
if (user.r_hand == W)
|
||||
user.u_equip(W)
|
||||
user.r_hand = R
|
||||
else
|
||||
user.u_equip(W)
|
||||
user.l_hand = R
|
||||
W.master = R
|
||||
src.master = R
|
||||
src.layer = initial(src.layer)
|
||||
user.u_equip(src)
|
||||
if (user.client)
|
||||
user.client.screen -= src
|
||||
src.loc = R
|
||||
R.part3 = src
|
||||
R.layer = 20
|
||||
R.loc = user
|
||||
src.add_fingerprint(user)
|
||||
*/
|
||||
return
|
||||
/* else if ((istype(W, /obj/item/device/timer) && !( src.status )))
|
||||
|
||||
var/obj/item/assembly/time_ignite/R = new /obj/item/assembly/time_ignite( user )
|
||||
W.loc = R
|
||||
R.part1 = W
|
||||
W.layer = initial(W.layer)
|
||||
if (user.client)
|
||||
user.client.screen -= W
|
||||
if (user.r_hand == W)
|
||||
user.u_equip(W)
|
||||
user.r_hand = R
|
||||
else
|
||||
user.u_equip(W)
|
||||
user.l_hand = R
|
||||
W.master = R
|
||||
src.master = R
|
||||
src.layer = initial(src.layer)
|
||||
user.u_equip(src)
|
||||
if (user.client)
|
||||
user.client.screen -= src
|
||||
src.loc = R
|
||||
R.part2 = src
|
||||
R.layer = 20
|
||||
R.loc = user
|
||||
src.add_fingerprint(user)
|
||||
*/
|
||||
|
||||
/obj/item/assembly/proc/c_state(n, O as obj)
|
||||
return
|
||||
|
||||
/obj/item/assembly/a_i_a/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
|
||||
var/turf/T = src.loc
|
||||
if (ismob(T))
|
||||
T = T.loc
|
||||
src.part1.loc = T
|
||||
src.part1.master = null
|
||||
src.part1 = null
|
||||
src.part2.loc = T
|
||||
src.part2.master = null
|
||||
src.part2 = null
|
||||
src.part3.loc = T
|
||||
src.part3.master = null
|
||||
src.part3 = null
|
||||
|
||||
del(src)
|
||||
return
|
||||
if (( istype(W, /obj/item/weapon/screwdriver) ))
|
||||
if (!src.status && (!part1||!part2||!part3))
|
||||
user << "\red You cannot finish the assembly, not all components are in place!"
|
||||
return
|
||||
src.status = !( src.status )
|
||||
if (src.status)
|
||||
user.show_message("\blue The armor is now secured!", 1)
|
||||
else
|
||||
user.show_message("\blue The armor is now unsecured!", 1)
|
||||
src.add_fingerprint(user)
|
||||
|
||||
/obj/item/assembly/a_i_a/Del()
|
||||
//src.part1 = null
|
||||
del(src.part1)
|
||||
//src.part2 = null
|
||||
del(src.part2)
|
||||
del(src.part3)
|
||||
..()
|
||||
return
|
||||
//*****
|
||||
|
||||
/obj/item/assembly/rad_time/Del()
|
||||
//src.part1 = null
|
||||
del(src.part1)
|
||||
//src.part2 = null
|
||||
del(src.part2)
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/assembly/rad_time/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
|
||||
if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
|
||||
var/turf/T = src.loc
|
||||
if (ismob(T))
|
||||
T = T.loc
|
||||
src.part1.loc = T
|
||||
src.part2.loc = T
|
||||
src.part1.master = null
|
||||
src.part2.master = null
|
||||
src.part1 = null
|
||||
src.part2 = null
|
||||
//SN src = null
|
||||
del(src)
|
||||
return
|
||||
if (!( istype(W, /obj/item/weapon/screwdriver) ))
|
||||
return
|
||||
src.status = !( src.status )
|
||||
if (src.status)
|
||||
user.show_message("\blue The signaler is now secured!", 1)
|
||||
else
|
||||
user.show_message("\blue The signaler is now unsecured!", 1)
|
||||
src.part1.b_stat = !( src.status )
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/assembly/rad_time/attack_self(mob/user as mob)
|
||||
src.part1.attack_self(user, src.status)
|
||||
src.part2.attack_self(user, src.status)
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/assembly/rad_time/receive_signal(datum/signal/signal)
|
||||
if (signal.source == src.part2)
|
||||
src.part1.send_signal("ACTIVATE")
|
||||
return
|
||||
//*******************
|
||||
/obj/item/assembly/rad_prox/c_state(n)
|
||||
src.icon_state = "prox-radio[n]"
|
||||
return
|
||||
|
||||
/obj/item/assembly/rad_prox/Del()
|
||||
//src.part1 = null
|
||||
del(src.part1)
|
||||
//src.part2 = null
|
||||
del(src.part2)
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/assembly/rad_prox/HasProximity(atom/movable/AM as mob|obj)
|
||||
if (istype(AM, /obj/beam))
|
||||
return
|
||||
if (AM.move_speed < 12)
|
||||
src.part2.sense()
|
||||
return
|
||||
|
||||
/obj/item/assembly/rad_prox/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
|
||||
var/turf/T = src.loc
|
||||
if (ismob(T))
|
||||
T = T.loc
|
||||
src.part1.loc = T
|
||||
src.part2.loc = T
|
||||
src.part1.master = null
|
||||
src.part2.master = null
|
||||
src.part1 = null
|
||||
src.part2 = null
|
||||
//SN src = null
|
||||
del(src)
|
||||
return
|
||||
if (!( istype(W, /obj/item/weapon/screwdriver) ))
|
||||
return
|
||||
src.status = !( src.status )
|
||||
if (src.status)
|
||||
user.show_message("\blue The proximity sensor is now secured!", 1)
|
||||
else
|
||||
user.show_message("\blue The proximity sensor is now unsecured!", 1)
|
||||
src.part1.b_stat = !( src.status )
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/assembly/rad_prox/attack_self(mob/user as mob)
|
||||
src.part1.attack_self(user, src.status)
|
||||
src.part2.attack_self(user, src.status)
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/assembly/rad_prox/receive_signal(datum/signal/signal)
|
||||
if (signal.source == src.part2)
|
||||
src.part1.send_signal("ACTIVATE")
|
||||
return
|
||||
|
||||
/obj/item/assembly/rad_prox/Move()
|
||||
..()
|
||||
src.part2.sense()
|
||||
return
|
||||
|
||||
/obj/item/assembly/rad_prox/attack_paw(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/item/assembly/rad_prox/dropped()
|
||||
spawn( 0 )
|
||||
src.part2.sense()
|
||||
return
|
||||
return
|
||||
//************************
|
||||
/obj/item/assembly/rad_infra/c_state(n)
|
||||
src.icon_state = text("infrared-radio[]", n)
|
||||
return
|
||||
|
||||
/obj/item/assembly/rad_infra/Del()
|
||||
del(src.part1)
|
||||
del(src.part2)
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/assembly/rad_infra/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
|
||||
var/turf/T = src.loc
|
||||
if (ismob(T))
|
||||
T = T.loc
|
||||
src.part1.loc = T
|
||||
src.part2.loc = T
|
||||
src.part1.master = null
|
||||
src.part2.master = null
|
||||
src.part1 = null
|
||||
src.part2 = null
|
||||
//SN src = null
|
||||
del(src)
|
||||
return
|
||||
if (!( istype(W, /obj/item/weapon/screwdriver) ))
|
||||
return
|
||||
src.status = !( src.status )
|
||||
if (src.status)
|
||||
user.show_message("\blue The infrared laser is now secured!", 1)
|
||||
else
|
||||
user.show_message("\blue The infrared laser is now unsecured!", 1)
|
||||
src.part1.b_stat = !( src.status )
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/assembly/rad_infra/attack_self(mob/user as mob)
|
||||
src.part1.attack_self(user, src.status)
|
||||
src.part2.attack_self(user, src.status)
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/assembly/rad_infra/receive_signal(datum/signal/signal)
|
||||
|
||||
if (signal.source == src.part2)
|
||||
src.part1.send_signal("ACTIVATE")
|
||||
return
|
||||
|
||||
/obj/item/assembly/rad_infra/verb/rotate()
|
||||
set name = "Rotate Assembly"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
src.dir = turn(src.dir, 90)
|
||||
src.part2.dir = src.dir
|
||||
src.add_fingerprint(usr)
|
||||
return
|
||||
|
||||
/obj/item/assembly/rad_infra/Move()
|
||||
|
||||
var/t = src.dir
|
||||
..()
|
||||
src.dir = t
|
||||
//src.part2.first = null
|
||||
del(src.part2.first)
|
||||
return
|
||||
|
||||
/obj/item/assembly/rad_infra/attack_paw(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/item/assembly/rad_infra/attack_hand(M)
|
||||
del(src.part2.first)
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/assembly/prox_ignite/HasProximity(atom/movable/AM as mob|obj)
|
||||
|
||||
if (istype(AM, /obj/beam))
|
||||
return
|
||||
if (AM.move_speed < 12 && src.part1)
|
||||
src.part1.sense()
|
||||
return
|
||||
|
||||
/obj/item/assembly/prox_ignite/dropped()
|
||||
spawn( 0 )
|
||||
src.part1.sense()
|
||||
return
|
||||
return
|
||||
|
||||
/obj/item/assembly/prox_ignite/Del()
|
||||
del(src.part1)
|
||||
del(src.part2)
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/assembly/prox_ignite/c_state(n)
|
||||
src.icon_state = text("prox-igniter[]", n)
|
||||
return
|
||||
|
||||
/obj/item/assembly/prox_ignite/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
|
||||
var/turf/T = src.loc
|
||||
if (ismob(T))
|
||||
T = T.loc
|
||||
src.part1.loc = T
|
||||
src.part2.loc = T
|
||||
src.part1.master = null
|
||||
src.part2.master = null
|
||||
src.part1 = null
|
||||
src.part2 = null
|
||||
//SN src = null
|
||||
del(src)
|
||||
return
|
||||
if (!( istype(W, /obj/item/weapon/screwdriver) ))
|
||||
return
|
||||
src.status = !( src.status )
|
||||
if (src.status)
|
||||
user.show_message("\blue The proximity sensor is now secured! The igniter now works!", 1)
|
||||
else
|
||||
user.show_message("\blue The proximity sensor is now unsecured! The igniter will not work.", 1)
|
||||
src.part2.secured = src.status
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/assembly/prox_ignite/attack_self(mob/user as mob)
|
||||
|
||||
if (src.part1)
|
||||
src.part1.attack_self(user, src.status)
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/assembly/prox_ignite/receive_signal()
|
||||
for(var/mob/O in hearers(1, src.loc))
|
||||
O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2)
|
||||
src.part2.Activate()
|
||||
return
|
||||
|
||||
/obj/item/assembly/rad_ignite/Del()
|
||||
del(src.part1)
|
||||
del(src.part2)
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
|
||||
/obj/item/assembly/rad_ignite/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
|
||||
var/turf/T = src.loc
|
||||
if (ismob(T))
|
||||
T = T.loc
|
||||
src.part1.loc = T
|
||||
src.part2.loc = T
|
||||
src.part1.master = null
|
||||
src.part2.master = null
|
||||
src.part1 = null
|
||||
src.part2 = null
|
||||
//SN src = null
|
||||
del(src)
|
||||
return
|
||||
if (!( istype(W, /obj/item/weapon/screwdriver) ))
|
||||
return
|
||||
src.status = !( src.status )
|
||||
if (src.status)
|
||||
user.show_message("\blue The radio is now secured! The igniter now works!", 1)
|
||||
else
|
||||
user.show_message("\blue The radio is now unsecured! The igniter will not work.", 1)
|
||||
src.part2.secured = src.status
|
||||
src.part1.b_stat = !( src.status )
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/assembly/rad_ignite/attack_self(mob/user as mob)
|
||||
|
||||
if (src.part1)
|
||||
src.part1.attack_self(user, src.status)
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/assembly/rad_ignite/receive_signal()
|
||||
for(var/mob/O in hearers(1, src.loc))
|
||||
O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2)
|
||||
src.part2.Activate()
|
||||
return
|
||||
|
||||
/obj/item/assembly/m_i_ptank/c_state(n)
|
||||
|
||||
src.icon_state = text("prox-igniter-tank[]", n)
|
||||
return
|
||||
|
||||
/obj/item/assembly/m_i_ptank/HasProximity(atom/movable/AM as mob|obj)
|
||||
if (istype(AM, /obj/beam))
|
||||
return
|
||||
if (AM.move_speed < 12 && src.part1)
|
||||
src.part1.sense()
|
||||
return
|
||||
|
||||
|
||||
//*****RM
|
||||
/obj/item/assembly/m_i_ptank/Bump(atom/O)
|
||||
spawn(0)
|
||||
//world << "miptank bumped into [O]"
|
||||
if(src.part1.secured)
|
||||
//world << "sending signal"
|
||||
receive_signal()
|
||||
else
|
||||
//world << "not active"
|
||||
..()
|
||||
|
||||
/obj/item/assembly/m_i_ptank/proc/prox_check()
|
||||
if(!part1 || !part1.secured)
|
||||
return
|
||||
for(var/atom/A in view(1, src.loc))
|
||||
if(A!=src && !istype(A, /turf/space) && !isarea(A))
|
||||
//world << "[A]:[A.type] was sensed"
|
||||
src.part1.sense()
|
||||
break
|
||||
|
||||
spawn(10)
|
||||
prox_check()
|
||||
|
||||
|
||||
//*****
|
||||
|
||||
|
||||
/obj/item/assembly/m_i_ptank/dropped()
|
||||
|
||||
spawn( 0 )
|
||||
part1.sense()
|
||||
return
|
||||
return
|
||||
|
||||
/obj/item/assembly/m_i_ptank/examine()
|
||||
..()
|
||||
part3.examine()
|
||||
|
||||
/obj/item/assembly/m_i_ptank/Del()
|
||||
|
||||
//src.part1 = null
|
||||
del(src.part1)
|
||||
//src.part2 = null
|
||||
del(src.part2)
|
||||
//src.part3 = null
|
||||
del(src.part3)
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/assembly/m_i_ptank/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
if (istype(W, /obj/item/device/analyzer))
|
||||
src.part3.attackby(W, user)
|
||||
return
|
||||
if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
|
||||
var/obj/item/assembly/prox_ignite/R = new(get_turf(src.loc))
|
||||
R.part1 = src.part1
|
||||
R.part1.master = R
|
||||
R.part1.loc = R
|
||||
R.part2 = src.part2
|
||||
R.part2.master = R
|
||||
R.part2.loc = R
|
||||
if (user.get_inactive_hand()==src)
|
||||
user.put_in_inactive_hand(part3)
|
||||
else
|
||||
part3.loc = src.loc
|
||||
src.part1 = null
|
||||
src.part2 = null
|
||||
src.part3 = null
|
||||
del(src)
|
||||
return
|
||||
if (!( istype(W, /obj/item/weapon/weldingtool)&&W:welding ))
|
||||
return
|
||||
if (!( src.status ))
|
||||
src.status = 1
|
||||
bombers += "[key_name(user)] welded a prox bomb. Temp: [src.part3.air_contents.temperature-T0C]"
|
||||
message_admins("[key_name_admin(user)] welded a prox bomb. Temp: [src.part3.air_contents.temperature-T0C]")
|
||||
user.show_message("\blue A pressure hole has been bored to the plasma tank valve. The plasma tank can now be ignited.", 1)
|
||||
else
|
||||
src.status = 0
|
||||
bombers += "[key_name(user)] unwelded a prox bomb. Temp: [src.part3.air_contents.temperature-T0C]"
|
||||
user << "\blue The hole has been closed."
|
||||
src.part2.secured = src.status
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/assembly/m_i_ptank/attack_self(mob/user as mob)
|
||||
|
||||
playsound(src.loc, 'armbomb.ogg', 100, 1)
|
||||
src.part1.attack_self(user, 1)
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/assembly/m_i_ptank/receive_signal()
|
||||
//world << "miptank [src] got signal"
|
||||
for(var/mob/O in hearers(1, null))
|
||||
O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2)
|
||||
//Foreach goto(19)
|
||||
|
||||
if ((src.status && prob(90)))
|
||||
//world << "sent ignite() to [src.part3]"
|
||||
src.part3.ignite()
|
||||
else
|
||||
if(!src.status)
|
||||
src.part3.release()
|
||||
src.part1.secured = 0.0
|
||||
|
||||
return
|
||||
|
||||
/obj/item/assembly/m_i_ptank/emp_act(severity)
|
||||
|
||||
if(istype(part3,/obj/item/weapon/tank/plasma) && prob(100/severity))
|
||||
part3.ignite()
|
||||
..()
|
||||
|
||||
//*****RM
|
||||
|
||||
/obj/item/assembly/t_i_ptank/c_state(n)
|
||||
|
||||
src.icon_state = text("timer-igniter-tank[]", n)
|
||||
return
|
||||
|
||||
/obj/item/assembly/t_i_ptank/examine()
|
||||
..()
|
||||
src.part3.examine()
|
||||
|
||||
/obj/item/assembly/t_i_ptank/Del()
|
||||
|
||||
//src.part1 = null
|
||||
del(src.part1)
|
||||
//src.part2 = null
|
||||
del(src.part2)
|
||||
//src.part3 = null
|
||||
del(src.part3)
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/assembly/t_i_ptank/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
|
||||
if (istype(W, /obj/item/device/analyzer))
|
||||
src.part3.attackby(W, user)
|
||||
return
|
||||
if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
|
||||
var/obj/item/assembly/time_ignite/R = new(get_turf(src.loc))
|
||||
R.part1 = src.part1
|
||||
R.part1.master = R
|
||||
R.part1.loc = R
|
||||
R.part2 = src.part2
|
||||
R.part2.master = R
|
||||
R.part2.loc = R
|
||||
if (user.get_inactive_hand()==src)
|
||||
user.put_in_inactive_hand(part3)
|
||||
else
|
||||
part3.loc = src.loc
|
||||
src.part1 = null
|
||||
src.part2 = null
|
||||
src.part3 = null
|
||||
del(src)
|
||||
return
|
||||
if (!( istype(W, /obj/item/weapon/weldingtool) && W:welding))
|
||||
return
|
||||
if (!( src.status ))
|
||||
src.status = 1
|
||||
bombers += "[key_name(user)] welded a time bomb. Temp: [src.part3.air_contents.temperature-T0C]"
|
||||
message_admins("[key_name_admin(user)] welded a time bomb. Temp: [src.part3.air_contents.temperature-T0C]")
|
||||
user.show_message("\blue A pressure hole has been bored to the plasma tank valve. The plasma tank can now be ignited.", 1)
|
||||
else
|
||||
if(src)
|
||||
src.status = 0
|
||||
bombers += "[key_name(user)] unwelded a time bomb. Temp: [src.part3.air_contents.temperature-T0C]"
|
||||
user << "\blue The hole has been closed."
|
||||
src.part2.secured = src.status
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/assembly/t_i_ptank/attack_self(mob/user as mob)
|
||||
|
||||
src.part1.attack_self(user, 1)
|
||||
playsound(src.loc, 'armbomb.ogg', 100, 1)
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/assembly/t_i_ptank/receive_signal()
|
||||
//world << "tiptank [src] got signal"
|
||||
for(var/mob/O in hearers(1, null))
|
||||
O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2)
|
||||
//Foreach goto(19)
|
||||
if ((src.status && prob(90)))
|
||||
//world << "sent ignite() to [src.part3]"
|
||||
src.part3.ignite()
|
||||
else
|
||||
if(!src.status)
|
||||
src.part3.release()
|
||||
return
|
||||
|
||||
/obj/item/assembly/t_i_ptank/emp_act(severity)
|
||||
if(istype(part3,/obj/item/weapon/tank/plasma) && prob(100/severity))
|
||||
part3.ignite()
|
||||
..()
|
||||
|
||||
/obj/item/assembly/r_i_ptank/examine()
|
||||
..()
|
||||
src.part3.examine()
|
||||
|
||||
/obj/item/assembly/r_i_ptank/Del()
|
||||
|
||||
//src.part1 = null
|
||||
del(src.part1)
|
||||
//src.part2 = null
|
||||
del(src.part2)
|
||||
//src.part3 = null
|
||||
del(src.part3)
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/assembly/r_i_ptank/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
|
||||
if (istype(W, /obj/item/device/analyzer))
|
||||
src.part3.attackby(W, user)
|
||||
return
|
||||
if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
|
||||
var/obj/item/assembly/rad_ignite/R = new(get_turf(src.loc))
|
||||
R.part1 = src.part1
|
||||
R.part1.master = R
|
||||
R.part1.loc = R
|
||||
R.part2 = src.part2
|
||||
R.part2.master = R
|
||||
R.part2.loc = R
|
||||
if (user.get_inactive_hand()==src)
|
||||
user.put_in_inactive_hand(part3)
|
||||
else
|
||||
part3.loc = src.loc
|
||||
src.part1 = null
|
||||
src.part2 = null
|
||||
src.part3 = null
|
||||
del(src)
|
||||
return
|
||||
if (!( istype(W, /obj/item/weapon/weldingtool) && W:welding ))
|
||||
return
|
||||
if (!( src.status ))
|
||||
src.status = 1
|
||||
bombers += "[key_name(user)] welded a radio bomb. Temp: [src.part3.air_contents.temperature-T0C]"
|
||||
message_admins("[key_name_admin(user)] welded a radio bomb. Temp: [src.part3.air_contents.temperature-T0C]")
|
||||
user.show_message("\blue A pressure hole has been bored to the plasma tank valve. The plasma tank can now be ignited.", 1)
|
||||
else
|
||||
src.status = 0
|
||||
bombers += "[key_name(user)] unwelded a radio bomb. Temp: [src.part3.air_contents.temperature-T0C]"
|
||||
user << "\blue The hole has been closed."
|
||||
src.part2.secured = src.status
|
||||
src.part1.b_stat = !( src.status )
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/assembly/r_i_ptank/emp_act(severity)
|
||||
if(istype(part3,/obj/item/weapon/tank/plasma) && prob(100/severity))
|
||||
part3.ignite()
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/clothing/suit/armor/a_i_a_ptank/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
if (istype(W, /obj/item/device/analyzer))
|
||||
src.part4.attackby(W, user)
|
||||
return
|
||||
if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
|
||||
var/obj/item/assembly/a_i_a/R = new(get_turf(src.loc))
|
||||
R.part1 = src.part1
|
||||
R.part1.master = R
|
||||
R.part1.loc = R
|
||||
R.part2 = src.part2
|
||||
R.part2.master = R
|
||||
R.part2.loc = R
|
||||
R.part3 = src.part3
|
||||
R.part3.master = R
|
||||
R.part3.loc = R
|
||||
if (user.get_inactive_hand()==src)
|
||||
user.put_in_inactive_hand(part4)
|
||||
else
|
||||
part4.loc = src.loc
|
||||
src.part1 = null
|
||||
src.part2 = null
|
||||
src.part3 = null
|
||||
src.part4 = null
|
||||
del(src)
|
||||
return
|
||||
if (( istype(W, /obj/item/weapon/weldingtool) && W:welding))
|
||||
return
|
||||
if (!( src.status ))
|
||||
src.status = 1
|
||||
bombers += "[key_name(user)] welded a suicide bomb. Temp: [src.part4.air_contents.temperature-T0C]"
|
||||
message_admins("[key_name_admin(user)] welded a suicide bomb. Temp: [src.part4.air_contents.temperature-T0C]")
|
||||
user.show_message("\blue A pressure hole has been bored to the plasma tank valve. The plasma tank can now be ignited.", 1)
|
||||
else
|
||||
src.status = 0
|
||||
bombers += "[key_name(user)] unwelded a suicide bomb. Temp: [src.part4.air_contents.temperature-T0C]"
|
||||
user << "\blue The hole has been closed."
|
||||
// src.part3.status = src.status
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/assembly/r_i_ptank/attack_self(mob/user as mob)
|
||||
playsound(src.loc, 'armbomb.ogg', 100, 1)
|
||||
src.part1.attack_self(user, 1)
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/assembly/r_i_ptank/receive_signal()
|
||||
//world << "riptank [src] got signal"
|
||||
for(var/mob/O in hearers(1, null))
|
||||
O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2)
|
||||
//Foreach goto(19)
|
||||
if ((src.status && prob(90)))
|
||||
//world << "sent ignite() to [src.part3]"
|
||||
src.part3.ignite()
|
||||
else
|
||||
if(!src.status)
|
||||
src.part3.release()
|
||||
return
|
||||
|
||||
|
||||
//*****RM
|
||||
Reference in New Issue
Block a user