mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-19 02:56:14 +01:00
Revert "[MIRROR] /atom New() => Initialize() [MDB IGNORE]"
This commit is contained in:
@@ -13,139 +13,6 @@
|
||||
desc = "theres something alien about this"
|
||||
icon = 'icons/mob/alien.dmi'
|
||||
|
||||
/*
|
||||
* Resin
|
||||
*/
|
||||
/obj/effect/alien/resin
|
||||
name = "resin"
|
||||
desc = "Looks like some kind of slimy growth."
|
||||
icon_state = "resin"
|
||||
|
||||
density = 1
|
||||
opacity = 1
|
||||
anchored = 1
|
||||
can_atmos_pass = ATMOS_PASS_NO
|
||||
var/health = 200
|
||||
//var/mob/living/affecting = null
|
||||
|
||||
/obj/effect/alien/resin/wall
|
||||
name = "resin wall"
|
||||
desc = "Purple slime solidified into a wall."
|
||||
icon_state = "resinwall" //same as resin, but consistency ho!
|
||||
|
||||
/obj/effect/alien/resin/membrane
|
||||
name = "resin membrane"
|
||||
desc = "Purple slime just thin enough to let light pass through."
|
||||
icon_state = "resinmembrane"
|
||||
opacity = 0
|
||||
health = 120
|
||||
|
||||
/obj/effect/alien/resin/Initialize()
|
||||
. = ..()
|
||||
var/turf/T = get_turf(src)
|
||||
T.thermal_conductivity = WALL_HEAT_TRANSFER_COEFFICIENT
|
||||
|
||||
/obj/effect/alien/resin/Destroy()
|
||||
var/turf/T = get_turf(src)
|
||||
T.thermal_conductivity = initial(T.thermal_conductivity)
|
||||
..()
|
||||
|
||||
/obj/effect/alien/resin/proc/healthcheck()
|
||||
if(health <=0)
|
||||
density = 0
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/effect/alien/resin/bullet_act(var/obj/item/projectile/Proj)
|
||||
health -= Proj.damage
|
||||
..()
|
||||
healthcheck()
|
||||
return
|
||||
|
||||
/obj/effect/alien/resin/attack_generic(var/mob/user, var/damage, var/attack_verb)
|
||||
visible_message("<span class='danger'>[user] [attack_verb] the [src]!</span>")
|
||||
playsound(src, 'sound/effects/attackblob.ogg', 100, 1)
|
||||
user.do_attack_animation(src)
|
||||
health -= damage
|
||||
healthcheck()
|
||||
return
|
||||
|
||||
/obj/effect/alien/resin/take_damage(var/damage)
|
||||
health -= damage
|
||||
healthcheck()
|
||||
return
|
||||
|
||||
/obj/effect/alien/resin/ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
health-=50
|
||||
if(2.0)
|
||||
health-=50
|
||||
if(3.0)
|
||||
if (prob(50))
|
||||
health-=50
|
||||
else
|
||||
health-=25
|
||||
healthcheck()
|
||||
return
|
||||
|
||||
/obj/effect/alien/resin/hitby(AM as mob|obj)
|
||||
..()
|
||||
for(var/mob/O in viewers(src, null))
|
||||
O.show_message("<span class='danger'>[src] was hit by [AM].</span>", 1)
|
||||
var/tforce = 0
|
||||
if(ismob(AM))
|
||||
tforce = 10
|
||||
else
|
||||
tforce = AM:throwforce
|
||||
playsound(src, 'sound/effects/attackblob.ogg', 100, 1)
|
||||
health = max(0, health - tforce)
|
||||
healthcheck()
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/effect/alien/resin/attack_hand()
|
||||
usr.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
||||
if (HULK in usr.mutations)
|
||||
to_chat(usr, "<span class='notice'>You easily destroy the [name].</span>")
|
||||
for(var/mob/O in oviewers(src))
|
||||
O.show_message("<span class='warning'>[usr] destroys the [name]!</span>", 1)
|
||||
health = 0
|
||||
else
|
||||
|
||||
// Aliens can get straight through these.
|
||||
if(istype(usr,/mob/living/carbon))
|
||||
var/mob/living/carbon/M = usr
|
||||
if(locate(/obj/item/organ/internal/xenos/hivenode) in M.internal_organs)
|
||||
for(var/mob/O in oviewers(src))
|
||||
O.show_message("<span class='warning'>[usr] strokes the [name] and it melts away!</span>", 1)
|
||||
health = 0
|
||||
healthcheck()
|
||||
return
|
||||
|
||||
to_chat(usr, "<span class='notice'>You claw at the [name].</span>")
|
||||
for(var/mob/O in oviewers(src))
|
||||
O.show_message("<span class='warning'>[usr] claws at the [name]!</span>", 1)
|
||||
health -= rand(5,10)
|
||||
healthcheck()
|
||||
return
|
||||
|
||||
/obj/effect/alien/resin/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
|
||||
user.setClickCooldown(user.get_attack_speed(W))
|
||||
var/aforce = W.force
|
||||
health = max(0, health - aforce)
|
||||
playsound(src, 'sound/effects/attackblob.ogg', 100, 1)
|
||||
healthcheck()
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/effect/alien/resin/CanPass(atom/movable/mover, turf/target)
|
||||
if(istype(mover) && mover.checkpass(PASSGLASS))
|
||||
return !opacity
|
||||
return !density
|
||||
|
||||
|
||||
/*
|
||||
* Weeds
|
||||
*/
|
||||
@@ -381,7 +248,7 @@
|
||||
var/ticks = 0
|
||||
var/target_strength = 0
|
||||
|
||||
/obj/effect/alien/acid/Initialize(var/ml, target)
|
||||
/obj/effect/alien/acid/New(loc, target)
|
||||
..(loc)
|
||||
src.target = target
|
||||
|
||||
@@ -424,129 +291,4 @@
|
||||
visible_message("<span class='alium'>[src.target] begins to crumble under the acid!</span>")
|
||||
spawn(rand(150, 200)) tick()
|
||||
|
||||
/*
|
||||
* Egg
|
||||
*/
|
||||
/var/const //for the status var
|
||||
BURST = 0
|
||||
BURSTING = 1
|
||||
GROWING = 2
|
||||
GROWN = 3
|
||||
|
||||
MIN_GROWTH_TIME = 1800 //time it takes to grow a hugger
|
||||
MAX_GROWTH_TIME = 3000
|
||||
|
||||
/obj/effect/alien/egg
|
||||
desc = "It looks like a weird egg"
|
||||
name = "egg"
|
||||
// icon_state = "egg_growing" // So the egg looks 'grown', even though it's not.
|
||||
icon_state = "egg"
|
||||
density = 0
|
||||
anchored = 1
|
||||
|
||||
var/health = 100
|
||||
var/status = BURST //can be GROWING, GROWN or BURST; all mutually exclusive
|
||||
|
||||
/*
|
||||
/obj/effect/alien/egg/Initialize()
|
||||
. = ..()
|
||||
if(config.aliens_allowed)
|
||||
addtimer(CALLBACK(src, .proc/Grow), rand(MIN_GROWTH_TIME,MAX_GROWTH_TIME))
|
||||
else
|
||||
return INITIALIZE_HINT_QDEL
|
||||
*/
|
||||
|
||||
/obj/effect/alien/egg/attack_hand(user as mob)
|
||||
|
||||
var/mob/living/carbon/M = user
|
||||
if(!istype(M) || !(locate(/obj/item/organ/internal/xenos/hivenode) in M.internal_organs))
|
||||
return attack_hand(user)
|
||||
|
||||
switch(status)
|
||||
if(BURST)
|
||||
to_chat(user, "<span class='warning'>You clear the hatched egg.</span>")
|
||||
qdel(src)
|
||||
return
|
||||
/* if(GROWING)
|
||||
to_chat(user, "<span class='warning'>The child is not developed yet.</span>")
|
||||
return
|
||||
if(GROWN)
|
||||
to_chat(user, "<span class='warning'>You retrieve the child.</span>")
|
||||
Burst(0)
|
||||
return
|
||||
|
||||
/obj/effect/alien/egg/proc/GetFacehugger() // Commented out for future edit.
|
||||
return locate(/obj/item/clothing/mask/facehugger) in contents
|
||||
|
||||
/obj/effect/alien/egg/proc/Grow()
|
||||
icon_state = "egg"
|
||||
// status = GROWN
|
||||
status = BURST
|
||||
// new /obj/item/clothing/mask/facehugger(src)
|
||||
return
|
||||
*/
|
||||
/obj/effect/alien/egg/proc/Burst(var/kill = 1) //drops and kills the hugger if any is remaining
|
||||
if(status == GROWN || status == GROWING)
|
||||
// var/obj/item/clothing/mask/facehugger/child = GetFacehugger()
|
||||
icon_state = "egg_hatched"
|
||||
/* flick("egg_opening", src)
|
||||
status = BURSTING
|
||||
spawn(15)
|
||||
status = BURST
|
||||
child.loc = get_turf(src)
|
||||
|
||||
if(kill && istype(child))
|
||||
child.Die()
|
||||
else
|
||||
for(var/mob/M in range(1,src))
|
||||
if(CanHug(M))
|
||||
child.Attach(M)
|
||||
break
|
||||
*/
|
||||
/obj/effect/alien/egg/bullet_act(var/obj/item/projectile/Proj)
|
||||
health -= Proj.damage
|
||||
..()
|
||||
healthcheck()
|
||||
return
|
||||
|
||||
/obj/effect/alien/egg/attack_generic(var/mob/user, var/damage, var/attack_verb)
|
||||
visible_message("<span class='danger'>[user] [attack_verb] the [src]!</span>")
|
||||
user.do_attack_animation(src)
|
||||
health -= damage
|
||||
healthcheck()
|
||||
return
|
||||
|
||||
/obj/effect/alien/egg/take_damage(var/damage)
|
||||
health -= damage
|
||||
healthcheck()
|
||||
return
|
||||
|
||||
|
||||
/obj/effect/alien/egg/attackby(var/obj/item/weapon/W, var/mob/user)
|
||||
if(health <= 0)
|
||||
return
|
||||
if(W.attack_verb.len)
|
||||
src.visible_message("<span class='danger'>\The [src] has been [pick(W.attack_verb)] with \the [W][(user ? " by [user]." : ".")]</span>")
|
||||
else
|
||||
src.visible_message("<span class='danger'>\The [src] has been attacked with \the [W][(user ? " by [user]." : ".")]</span>")
|
||||
var/damage = W.force / 4.0
|
||||
|
||||
if(istype(W, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
|
||||
if(WT.remove_fuel(0, user))
|
||||
damage = 15
|
||||
playsound(src, 'sound/items/Welder.ogg', 100, 1)
|
||||
|
||||
src.health -= damage
|
||||
src.healthcheck()
|
||||
|
||||
|
||||
/obj/effect/alien/egg/proc/healthcheck()
|
||||
if(health <= 0)
|
||||
Burst()
|
||||
|
||||
/obj/effect/alien/egg/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
if(exposed_temperature > 500 + T0C)
|
||||
health -= 5
|
||||
healthcheck()
|
||||
//Xenomorph Effect egg removed, replaced with Structure Egg.
|
||||
@@ -11,8 +11,8 @@ var/list/obj/effect/bump_teleporter/BUMP_TELEPORTERS = list()
|
||||
density = TRUE
|
||||
opacity = 0
|
||||
|
||||
/obj/effect/bump_teleporter/Initialize()
|
||||
. = ..()
|
||||
/obj/effect/bump_teleporter/New()
|
||||
..()
|
||||
BUMP_TELEPORTERS += src
|
||||
|
||||
/obj/effect/bump_teleporter/Destroy()
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
time_to_live = 300
|
||||
pass_flags = PASSTABLE | PASSGRILLE | PASSGLASS //PASSGLASS is fine here, it's just so the visual effect can "flow" around glass
|
||||
|
||||
/obj/effect/effect/smoke/chem/Initialize()
|
||||
. = ..()
|
||||
/obj/effect/effect/smoke/chem/New()
|
||||
..()
|
||||
create_reagents(500)
|
||||
return
|
||||
|
||||
|
||||
@@ -6,9 +6,12 @@
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "dirt"
|
||||
|
||||
/obj/effect/decal/cleanable/chemcoating/New()
|
||||
..()
|
||||
create_reagents(100)
|
||||
|
||||
/obj/effect/decal/cleanable/chemcoating/Initialize()
|
||||
. = ..()
|
||||
create_reagents(100)
|
||||
var/turf/T = get_turf(src)
|
||||
if(T)
|
||||
for(var/obj/O in get_turf(src))
|
||||
|
||||
@@ -142,8 +142,8 @@
|
||||
can_atmos_pass = ATMOS_PASS_NO
|
||||
var/metal = 1 // 1 = aluminum, 2 = iron
|
||||
|
||||
/obj/structure/foamedmetal/Initialize()
|
||||
. = ..()
|
||||
/obj/structure/foamedmetal/New()
|
||||
..()
|
||||
update_nearby_tiles(1)
|
||||
|
||||
/obj/structure/foamedmetal/Destroy()
|
||||
|
||||
@@ -9,31 +9,26 @@
|
||||
generic_filth = TRUE
|
||||
persistent = FALSE
|
||||
|
||||
/obj/effect/decal/cleanable/liquid_fuel/Initialize(var/ml, amt=1, nologs=1)
|
||||
|
||||
. = ..(ml)
|
||||
|
||||
if(!isturf(loc))
|
||||
return INITIALIZE_HINT_QDEL
|
||||
|
||||
/obj/effect/decal/cleanable/liquid_fuel/New(turf/newLoc,amt=1,nologs=1)
|
||||
if(!nologs)
|
||||
message_admins("Liquid fuel has spilled in [loc.name] ([loc.x],[loc.y],[loc.z]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[loc.x];Y=[loc.y];Z=[loc.z]'>JMP</a>)")
|
||||
log_game("Liquid fuel has spilled in [loc.name] ([loc.x],[loc.y],[loc.z])")
|
||||
message_admins("Liquid fuel has spilled in [newLoc.loc.name] ([newLoc.x],[newLoc.y],[newLoc.z]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[newLoc.x];Y=[newLoc.y];Z=[newLoc.z]'>JMP</a>)")
|
||||
log_game("Liquid fuel has spilled in [newLoc.loc.name] ([newLoc.x],[newLoc.y],[newLoc.z])")
|
||||
src.amount = amt
|
||||
|
||||
var/has_spread = 0
|
||||
//Be absorbed by any other liquid fuel in the tile.
|
||||
for(var/obj/effect/decal/cleanable/liquid_fuel/other in loc)
|
||||
for(var/obj/effect/decal/cleanable/liquid_fuel/other in newLoc)
|
||||
if(other != src)
|
||||
other.amount += src.amount
|
||||
other.Spread()
|
||||
has_spread = 1
|
||||
break
|
||||
|
||||
. = ..()
|
||||
if(!has_spread)
|
||||
Spread()
|
||||
else
|
||||
return INITIALIZE_HINT_QDEL
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/decal/cleanable/liquid_fuel/proc/Spread(exclude=list())
|
||||
//Allows liquid fuels to sometimes flow into other tiles.
|
||||
@@ -58,10 +53,10 @@
|
||||
icon_state = "mustard"
|
||||
anchored = FALSE
|
||||
|
||||
/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel/Initialize(var/ml, amt = 1, d = 0)
|
||||
/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel/New(newLoc, amt = 1, d = 0)
|
||||
set_dir(d) //Setting this direction means you won't get torched by your own flamethrower.
|
||||
if(istype(loc, /turf/simulated))
|
||||
var/turf/simulated/T = loc
|
||||
if(istype(newLoc, /turf/simulated))
|
||||
var/turf/simulated/T = newLoc
|
||||
T.hotspot_expose((T20C*2) + 380,500) //Ignite the fuel.
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -37,8 +37,8 @@ var/global/list/image/splatter_cache=list()
|
||||
amount = 0
|
||||
..(ignore=1)
|
||||
|
||||
/obj/effect/decal/cleanable/blood/Initialize()
|
||||
. = ..()
|
||||
/obj/effect/decal/cleanable/blood/New()
|
||||
..()
|
||||
update_icon()
|
||||
if(istype(src, /obj/effect/decal/cleanable/blood/gibs))
|
||||
return
|
||||
@@ -144,8 +144,8 @@ var/global/list/image/splatter_cache=list()
|
||||
amount = 0
|
||||
var/list/drips = list()
|
||||
|
||||
/obj/effect/decal/cleanable/blood/drip/Initialize()
|
||||
. = ..()
|
||||
/obj/effect/decal/cleanable/blood/drip/New()
|
||||
..()
|
||||
drips |= icon_state
|
||||
|
||||
/obj/effect/decal/cleanable/blood/writing
|
||||
@@ -156,8 +156,8 @@ var/global/list/image/splatter_cache=list()
|
||||
amount = 0
|
||||
var/message
|
||||
|
||||
/obj/effect/decal/cleanable/blood/writing/Initialize()
|
||||
. = ..()
|
||||
/obj/effect/decal/cleanable/blood/writing/New()
|
||||
..()
|
||||
if(random_icon_states.len)
|
||||
for(var/obj/effect/decal/cleanable/blood/writing/W in loc)
|
||||
random_icon_states.Remove(W.icon_state)
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
|
||||
/obj/effect/decal/cleanable/greenglow
|
||||
|
||||
/obj/effect/decal/cleanable/greenglow/Initialize()
|
||||
. = ..()
|
||||
/obj/effect/decal/cleanable/greenglow/New()
|
||||
..()
|
||||
QDEL_IN(src, 2 MINUTES)
|
||||
|
||||
/obj/effect/decal/cleanable/dirt
|
||||
|
||||
@@ -21,8 +21,6 @@ generic_filth = TRUE means when the decal is saved, it will be switched out for
|
||||
if(!mapload || !config.persistence_ignore_mapload)
|
||||
SSpersistence.track_value(src, /datum/persistent/filth)
|
||||
. = ..()
|
||||
if (random_icon_states && length(src.random_icon_states) > 0)
|
||||
src.icon_state = pick(src.random_icon_states)
|
||||
|
||||
/obj/effect/decal/cleanable/Destroy()
|
||||
SSpersistence.forget_value(src, /datum/persistent/filth)
|
||||
@@ -33,3 +31,8 @@ generic_filth = TRUE means when the decal is saved, it will be switched out for
|
||||
qdel(src)
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/effect/decal/cleanable/New()
|
||||
if (random_icon_states && length(src.random_icon_states) > 0)
|
||||
src.icon_state = pick(src.random_icon_states)
|
||||
..()
|
||||
|
||||
@@ -6,8 +6,9 @@
|
||||
layer = DIRTY_LAYER
|
||||
anchored = TRUE
|
||||
|
||||
/obj/effect/decal/cleanable/crayon/Initialize(var/ml, main = "#FFFFFF",shade = "#000000",var/type = "rune")
|
||||
. = ..()
|
||||
/obj/effect/decal/cleanable/crayon/New(location,main = "#FFFFFF",shade = "#000000",var/type = "rune")
|
||||
..()
|
||||
loc = location
|
||||
|
||||
name = type
|
||||
desc = "A [type] drawn in crayon."
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
var/ruined = FALSE
|
||||
|
||||
// This stuff needs to go in new() for the the flick() to look right while it's being placed
|
||||
/obj/structure/sign/poster/Initialize(var/ml, var/placement_dir = null, var/obj/item/poster/P = null)
|
||||
/obj/structure/sign/poster/New(var/newloc, var/placement_dir = null, var/obj/item/poster/P = null)
|
||||
if(placement_dir)
|
||||
dir = placement_dir
|
||||
|
||||
@@ -144,7 +144,7 @@
|
||||
pixel_y = 0
|
||||
|
||||
flick("poster_being_set", src)
|
||||
. = ..()
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/structure/sign/poster/Initialize(var/newloc, var/placement_dir = null, var/obj/item/poster/P = null)
|
||||
|
||||
@@ -178,8 +178,8 @@ steam.start() -- spawns the effect
|
||||
pixel_x = -32
|
||||
pixel_y = -32
|
||||
|
||||
/obj/effect/effect/smoke/Initialize()
|
||||
. = ..()
|
||||
/obj/effect/effect/smoke/New()
|
||||
..()
|
||||
if(time_to_live)
|
||||
spawn (time_to_live)
|
||||
if(!QDELETED(src))
|
||||
@@ -213,9 +213,9 @@ steam.start() -- spawns the effect
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "sparks"
|
||||
|
||||
/obj/effect/effect/smoke/illumination/Initialize(var/ml, var/lifetime=10, var/range=null, var/power=null, var/color=null)
|
||||
/obj/effect/effect/smoke/illumination/New(var/newloc, var/lifetime=10, var/range=null, var/power=null, var/color=null)
|
||||
time_to_live=lifetime
|
||||
. = ..()
|
||||
..()
|
||||
set_light(range, power, color)
|
||||
|
||||
/////////////////////////////////////////////
|
||||
|
||||
@@ -6,9 +6,11 @@
|
||||
anchored = TRUE
|
||||
mouse_opacity = 0
|
||||
|
||||
/obj/effect/expl_particles/Initialize()
|
||||
. = ..()
|
||||
QDEL_IN(src, 15)
|
||||
/obj/effect/expl_particles/New()
|
||||
..()
|
||||
spawn (15)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/datum/effect/system/expl_particles
|
||||
var/number = 10
|
||||
@@ -40,9 +42,11 @@
|
||||
pixel_x = -32
|
||||
pixel_y = -32
|
||||
|
||||
/obj/effect/explosion/Initialize()
|
||||
. = ..()
|
||||
QDEL_IN(src, 10)
|
||||
/obj/effect/explosion/New()
|
||||
..()
|
||||
spawn (10)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/datum/effect/system/explosion
|
||||
var/turf/location
|
||||
|
||||
@@ -9,14 +9,12 @@
|
||||
var/fleshcolor //Used for gibbed humans.
|
||||
var/bloodcolor //Used for gibbed humans.
|
||||
|
||||
/obj/effect/gibspawner/Initialize(var/ml, var/datum/dna/MobDNA, var/fleshcolor, var/bloodcolor)
|
||||
. = ..()
|
||||
if(fleshcolor)
|
||||
src.fleshcolor = fleshcolor
|
||||
if(bloodcolor)
|
||||
src.bloodcolor = bloodcolor
|
||||
/obj/effect/gibspawner/New(location, var/datum/dna/MobDNA, var/fleshcolor, var/bloodcolor)
|
||||
..()
|
||||
|
||||
if(fleshcolor) src.fleshcolor = fleshcolor
|
||||
if(bloodcolor) src.bloodcolor = bloodcolor
|
||||
Gib(loc,MobDNA)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
|
||||
/obj/effect/gibspawner/proc/Gib(atom/location, var/datum/dna/MobDNA = null)
|
||||
if(gibtypes.len != gibamounts.len || gibamounts.len != gibdirections.len)
|
||||
@@ -53,3 +51,5 @@
|
||||
var/list/directions = gibdirections[i]
|
||||
if(directions.len)
|
||||
gib.streak(directions)
|
||||
|
||||
qdel(src)
|
||||
|
||||
@@ -8,39 +8,46 @@
|
||||
invisibility = 100
|
||||
var/delete_me = 0
|
||||
|
||||
/obj/effect/landmark/Initialize()
|
||||
. = ..()
|
||||
/obj/effect/landmark/New()
|
||||
..()
|
||||
tag = text("landmark*[]", name)
|
||||
invisibility = 101
|
||||
|
||||
switch(name) //some of these are probably obsolete
|
||||
if("monkey")
|
||||
monkeystart += loc
|
||||
delete_me = 1
|
||||
return
|
||||
if("start")
|
||||
newplayer_start += loc
|
||||
delete_me = 1
|
||||
return
|
||||
if("JoinLate") // Bit difference, since we need the spawn point to move.
|
||||
latejoin += src
|
||||
simulated = 1
|
||||
simulated = TRUE
|
||||
// delete_me = 1
|
||||
return
|
||||
if("JoinLateGateway")
|
||||
latejoin_gateway += loc
|
||||
latejoin += src //VOREStation Addition
|
||||
delete_me = 1
|
||||
return
|
||||
if("JoinLateElevator")
|
||||
latejoin_elevator += loc
|
||||
delete_me = 1
|
||||
if("JoinLateCheckpoint")
|
||||
latejoin_checkpoint += loc
|
||||
delete_me = 1
|
||||
return
|
||||
if("JoinLateCryo")
|
||||
latejoin_cryo += loc
|
||||
delete_me = 1
|
||||
return
|
||||
if("JoinLateCyborg")
|
||||
latejoin_cyborg += loc
|
||||
delete_me = 1
|
||||
return
|
||||
if("prisonwarp")
|
||||
prisonwarp += loc
|
||||
delete_me = 1
|
||||
return
|
||||
if("Holding Facility")
|
||||
holdingfacility += loc
|
||||
if("tdome1")
|
||||
@@ -54,18 +61,23 @@
|
||||
if("prisonsecuritywarp")
|
||||
prisonsecuritywarp += loc
|
||||
delete_me = 1
|
||||
return
|
||||
if("blobstart")
|
||||
blobstart += loc
|
||||
delete_me = 1
|
||||
return
|
||||
if("xeno_spawn")
|
||||
xeno_spawn += loc
|
||||
delete_me = 1
|
||||
return
|
||||
if("endgame_exit")
|
||||
endgame_safespawns += loc
|
||||
delete_me = 1
|
||||
return
|
||||
if("bluespacerift")
|
||||
endgame_exits += loc
|
||||
delete_me = 1
|
||||
return
|
||||
//VOREStation Add Start
|
||||
if("vinestart")
|
||||
vinestart += loc
|
||||
@@ -73,14 +85,17 @@
|
||||
return
|
||||
//VORE Station Add End
|
||||
|
||||
if(delete_me)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
|
||||
landmarks_list += src
|
||||
return 1
|
||||
|
||||
/obj/effect/landmark/proc/delete()
|
||||
delete_me = 1
|
||||
|
||||
/obj/effect/landmark/Initialize()
|
||||
. = ..()
|
||||
if(delete_me)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
|
||||
/obj/effect/landmark/Destroy(var/force = FALSE)
|
||||
if(delete_me || force)
|
||||
landmarks_list -= src
|
||||
@@ -93,8 +108,8 @@
|
||||
icon_state = "x"
|
||||
anchored = TRUE
|
||||
|
||||
/obj/effect/landmark/start/Initialize()
|
||||
. = ..()
|
||||
/obj/effect/landmark/start/New()
|
||||
..()
|
||||
tag = "start*[name]"
|
||||
invisibility = 101
|
||||
|
||||
@@ -125,89 +140,79 @@
|
||||
icon_state = "x"
|
||||
anchored = TRUE
|
||||
|
||||
/obj/effect/landmark/virtual_reality/Initialize()
|
||||
. = ..()
|
||||
/obj/effect/landmark/virtual_reality/New()
|
||||
..()
|
||||
tag = "virtual_reality*[name]"
|
||||
invisibility = 101
|
||||
return 1
|
||||
|
||||
|
||||
//Costume spawner landmarks
|
||||
/obj/effect/landmark/costume/Initialize() //costume spawner, selects a random subclass and disappears
|
||||
..()
|
||||
if(type == /obj/effect/landmark/costume)
|
||||
var/list/options = subtypesof(/obj/effect/landmark/costume)
|
||||
var/PICK = options[rand(1,options.len)]
|
||||
new PICK(src.loc)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
/obj/effect/landmark/costume/New() //costume spawner, selects a random subclass and disappears
|
||||
|
||||
var/list/options = typesof(/obj/effect/landmark/costume)
|
||||
var/PICK= options[rand(1,options.len)]
|
||||
new PICK(src.loc)
|
||||
delete_me = 1
|
||||
|
||||
//SUBCLASSES. Spawn a bunch of items and disappear likewise
|
||||
/obj/effect/landmark/costume/chicken/Initialize()
|
||||
..()
|
||||
/obj/effect/landmark/costume/chicken/New()
|
||||
new /obj/item/clothing/suit/chickensuit(src.loc)
|
||||
new /obj/item/clothing/head/chicken(src.loc)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/egg(src.loc)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
delete_me = 1
|
||||
|
||||
/obj/effect/landmark/costume/gladiator/Initialize()
|
||||
..()
|
||||
/obj/effect/landmark/costume/gladiator/New()
|
||||
new /obj/item/clothing/under/gladiator(src.loc)
|
||||
new /obj/item/clothing/head/helmet/gladiator(src.loc)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/madscientist/Initialize()
|
||||
..()
|
||||
/obj/effect/landmark/costume/madscientist/New()
|
||||
new /obj/item/clothing/under/suit_jacket/green(src.loc)
|
||||
new /obj/item/clothing/head/flatcap(src.loc)
|
||||
new /obj/item/clothing/suit/storage/toggle/labcoat/mad(src.loc)
|
||||
new /obj/item/clothing/glasses/gglasses(src.loc)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
delete_me = 1
|
||||
|
||||
/obj/effect/landmark/costume/elpresidente/Initialize()
|
||||
..()
|
||||
/obj/effect/landmark/costume/elpresidente/New()
|
||||
new /obj/item/clothing/under/suit_jacket/green(src.loc)
|
||||
new /obj/item/clothing/head/flatcap(src.loc)
|
||||
new /obj/item/clothing/mask/smokable/cigarette/cigar/havana(src.loc)
|
||||
new /obj/item/clothing/shoes/boots/jackboots(src.loc)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
delete_me = 1
|
||||
|
||||
/obj/effect/landmark/costume/nyangirl/Initialize()
|
||||
..()
|
||||
/obj/effect/landmark/costume/nyangirl/New()
|
||||
new /obj/item/clothing/under/schoolgirl(src.loc)
|
||||
new /obj/item/clothing/head/kitty(src.loc)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
delete_me = 1
|
||||
|
||||
/obj/effect/landmark/costume/maid/Initialize()
|
||||
..()
|
||||
/obj/effect/landmark/costume/maid/New()
|
||||
new /obj/item/clothing/under/skirt(src.loc)
|
||||
var/CHOICE = pick( /obj/item/clothing/head/beret , /obj/item/clothing/head/rabbitears )
|
||||
new CHOICE(src.loc)
|
||||
new /obj/item/clothing/glasses/sunglasses/blindfold(src.loc)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
delete_me = 1
|
||||
|
||||
/obj/effect/landmark/costume/butler/Initialize()
|
||||
..()
|
||||
/obj/effect/landmark/costume/butler/New()
|
||||
new /obj/item/clothing/accessory/wcoat(src.loc)
|
||||
new /obj/item/clothing/under/suit_jacket(src.loc)
|
||||
new /obj/item/clothing/head/that(src.loc)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
delete_me = 1
|
||||
|
||||
/obj/effect/landmark/costume/scratch/Initialize()
|
||||
..()
|
||||
/obj/effect/landmark/costume/scratch/New()
|
||||
new /obj/item/clothing/gloves/white(src.loc)
|
||||
new /obj/item/clothing/shoes/white(src.loc)
|
||||
new /obj/item/clothing/under/scratch(src.loc)
|
||||
if (prob(30))
|
||||
new /obj/item/clothing/head/cueball(src.loc)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
delete_me = 1
|
||||
|
||||
/obj/effect/landmark/costume/highlander/Initialize()
|
||||
..()
|
||||
/obj/effect/landmark/costume/highlander/New()
|
||||
new /obj/item/clothing/under/kilt(src.loc)
|
||||
new /obj/item/clothing/head/beret(src.loc)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
delete_me = 1
|
||||
|
||||
/obj/effect/landmark/costume/prig/Initialize()
|
||||
..()
|
||||
/obj/effect/landmark/costume/prig/New()
|
||||
new /obj/item/clothing/accessory/wcoat(src.loc)
|
||||
new /obj/item/clothing/glasses/monocle(src.loc)
|
||||
var/CHOICE= pick( /obj/item/clothing/head/bowler, /obj/item/clothing/head/that)
|
||||
@@ -216,83 +221,71 @@
|
||||
new /obj/item/weapon/cane(src.loc)
|
||||
new /obj/item/clothing/under/sl_suit(src.loc)
|
||||
new /obj/item/clothing/mask/fakemoustache(src.loc)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
delete_me = 1
|
||||
|
||||
/obj/effect/landmark/costume/plaguedoctor/Initialize()
|
||||
..()
|
||||
/obj/effect/landmark/costume/plaguedoctor/New()
|
||||
new /obj/item/clothing/suit/bio_suit/plaguedoctorsuit(src.loc)
|
||||
new /obj/item/clothing/head/plaguedoctorhat(src.loc)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
delete_me = 1
|
||||
|
||||
/obj/effect/landmark/costume/nightowl/Initialize()
|
||||
..()
|
||||
/obj/effect/landmark/costume/nightowl/New()
|
||||
new /obj/item/clothing/under/owl(src.loc)
|
||||
new /obj/item/clothing/mask/gas/owl_mask(src.loc)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
delete_me = 1
|
||||
|
||||
/obj/effect/landmark/costume/waiter/Initialize()
|
||||
..()
|
||||
/obj/effect/landmark/costume/waiter/New()
|
||||
new /obj/item/clothing/under/waiter(src.loc)
|
||||
var/CHOICE= pick( /obj/item/clothing/head/kitty, /obj/item/clothing/head/rabbitears)
|
||||
new CHOICE(src.loc)
|
||||
new /obj/item/clothing/suit/storage/apron(src.loc)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
delete_me = 1
|
||||
|
||||
/obj/effect/landmark/costume/pirate/Initialize()
|
||||
..()
|
||||
/obj/effect/landmark/costume/pirate/New()
|
||||
new /obj/item/clothing/under/pirate(src.loc)
|
||||
new /obj/item/clothing/suit/pirate(src.loc)
|
||||
var/CHOICE = pick( /obj/item/clothing/head/pirate , /obj/item/clothing/head/bandana )
|
||||
new CHOICE(src.loc)
|
||||
new /obj/item/clothing/glasses/eyepatch(src.loc)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
delete_me = 1
|
||||
|
||||
/obj/effect/landmark/costume/commie/Initialize()
|
||||
..()
|
||||
/obj/effect/landmark/costume/commie/New()
|
||||
new /obj/item/clothing/under/soviet(src.loc)
|
||||
new /obj/item/clothing/head/ushanka(src.loc)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
delete_me = 1
|
||||
|
||||
/obj/effect/landmark/costume/imperium_monk/Initialize()
|
||||
..()
|
||||
/obj/effect/landmark/costume/imperium_monk/New()
|
||||
new /obj/item/clothing/suit/imperium_monk(src.loc)
|
||||
if (prob(25))
|
||||
new /obj/item/clothing/mask/gas/cyborg(src.loc)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
delete_me = 1
|
||||
|
||||
/obj/effect/landmark/costume/holiday_priest/Initialize()
|
||||
..()
|
||||
/obj/effect/landmark/costume/holiday_priest/New()
|
||||
new /obj/item/clothing/suit/holidaypriest(src.loc)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/marisawizard/fake/Initialize()
|
||||
..()
|
||||
/obj/effect/landmark/costume/marisawizard/fake/New()
|
||||
new /obj/item/clothing/head/wizard/marisa/fake(src.loc)
|
||||
new/obj/item/clothing/suit/wizrobe/marisa/fake(src.loc)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
delete_me = 1
|
||||
|
||||
/obj/effect/landmark/costume/cutewitch/Initialize()
|
||||
..()
|
||||
/obj/effect/landmark/costume/cutewitch/New()
|
||||
new /obj/item/clothing/under/sundress(src.loc)
|
||||
new /obj/item/clothing/head/witchwig(src.loc)
|
||||
new /obj/item/weapon/staff/broom(src.loc)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
delete_me = 1
|
||||
|
||||
/obj/effect/landmark/costume/fakewizard/Initialize()
|
||||
..()
|
||||
/obj/effect/landmark/costume/fakewizard/New()
|
||||
new /obj/item/clothing/suit/wizrobe/fake(src.loc)
|
||||
new /obj/item/clothing/head/wizard/fake(src.loc)
|
||||
new /obj/item/weapon/staff/(src.loc)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
delete_me = 1
|
||||
|
||||
/obj/effect/landmark/costume/sexyclown/Initialize()
|
||||
..()
|
||||
/obj/effect/landmark/costume/sexyclown/New()
|
||||
new /obj/item/clothing/mask/gas/sexyclown(src.loc)
|
||||
new /obj/item/clothing/under/sexyclown(src.loc)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
delete_me = 1
|
||||
|
||||
/obj/effect/landmark/costume/sexymime/Initialize()
|
||||
..()
|
||||
/obj/effect/landmark/costume/sexymime/New()
|
||||
new /obj/item/clothing/mask/gas/sexymime(src.loc)
|
||||
new /obj/item/clothing/under/sexymime(src.loc)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
delete_me = 1
|
||||
|
||||
@@ -13,8 +13,7 @@ var/global/list/global_used_pois = list()
|
||||
INITIALIZE_IMMEDIATE(/obj/effect/landmark/poi_loader)
|
||||
|
||||
/obj/effect/landmark/poi_loader/Initialize()
|
||||
// LINTER FIX NOTE: would suggest moving this to a queue on a subsystem that can be expected to init appropriately
|
||||
addtimer(CALLBACK(src, .proc/load_poi), 0)
|
||||
src.load_poi()
|
||||
return ..()
|
||||
|
||||
/obj/effect/landmark/poi_loader/proc/get_turfs_to_clean()
|
||||
|
||||
@@ -4,9 +4,10 @@
|
||||
icon_state = "x"
|
||||
unacidable = TRUE//Just to be sure.
|
||||
|
||||
/obj/effect/manifest/Initialize()
|
||||
. = ..()
|
||||
invisibility = 101
|
||||
/obj/effect/manifest/New()
|
||||
|
||||
src.invisibility = 101
|
||||
return
|
||||
|
||||
/obj/effect/manifest/proc/manifest()
|
||||
var/dat = "<B>Crew Manifest</B>:<BR>"
|
||||
@@ -17,3 +18,4 @@
|
||||
P.name = "paper- 'Crew Manifest'"
|
||||
//SN src = null
|
||||
qdel(src)
|
||||
return
|
||||
@@ -10,9 +10,9 @@
|
||||
plane = ABOVE_OBJ_PLANE
|
||||
var/tmp/atom/BeamSource
|
||||
|
||||
/obj/effect/overlay/beam/Initialize()
|
||||
. = ..()
|
||||
QDEL_IN(src, 10)
|
||||
/obj/effect/overlay/beam/New()
|
||||
..()
|
||||
spawn(10) qdel(src)
|
||||
|
||||
/obj/effect/overlay/palmtree_r
|
||||
name = "Palm tree"
|
||||
@@ -53,8 +53,8 @@
|
||||
layer = ABOVE_MOB_LAYER
|
||||
mouse_opacity = 0
|
||||
|
||||
/obj/effect/overlay/wallrot/Initialize()
|
||||
. = ..()
|
||||
/obj/effect/overlay/wallrot/New()
|
||||
..()
|
||||
pixel_x += rand(-10, 10)
|
||||
pixel_y += rand(-10, 10)
|
||||
|
||||
|
||||
@@ -4,13 +4,19 @@
|
||||
desc = "Oh shit!"
|
||||
icon_state = "pool"
|
||||
icon = 'icons/effects/64x64.dmi'
|
||||
|
||||
pixel_x = -16
|
||||
|
||||
/obj/effect/temporary_effect/eruption/Initialize(var/ml, var/ttd = 10 SECONDS, var/newcolor)
|
||||
/obj/effect/temporary_effect/eruption/New(var/turf/T, var/ttd = 10 SECONDS, var/newcolor)
|
||||
if(ttd)
|
||||
time_to_die = ttd
|
||||
|
||||
if(newcolor)
|
||||
color = newcolor
|
||||
|
||||
..()
|
||||
|
||||
/obj/effect/temporary_effect/eruption/Initialize()
|
||||
. = ..()
|
||||
flick("[icon_state]_create",src)
|
||||
|
||||
|
||||
@@ -22,12 +22,14 @@
|
||||
// Is the snake hunting a specific atom? (Will always try to meander toward this target.)
|
||||
var/atom/hunting
|
||||
|
||||
/obj/effect/temporary_effect/pulse/snake/Initialize(var/ml, var/atom/hunt_target, var/atom/Creator)
|
||||
/obj/effect/temporary_effect/pulse/snake/New(var/turf/T, var/atom/hunt_target, var/atom/Creator)
|
||||
if(hunt_target)
|
||||
hunting = hunt_target
|
||||
|
||||
if(Creator)
|
||||
creator = Creator
|
||||
. = ..()
|
||||
|
||||
..()
|
||||
|
||||
/obj/effect/temporary_effect/pulse/snake/pulse_loop() // Override needed unfortunately to handle the possibility of not finding a target turf.
|
||||
set waitfor = FALSE
|
||||
|
||||
@@ -44,14 +44,14 @@
|
||||
name = "TTV bomb - proximity"
|
||||
assembly_type = /obj/item/device/assembly/prox_sensor
|
||||
|
||||
/obj/effect/spawner/newbomb/radio/custom/Initialize(var/ml, ph, ox, co)
|
||||
/obj/effect/spawner/newbomb/radio/custom/New(var/newloc, ph, ox, co)
|
||||
if(ph != null) phoron_amt = ph
|
||||
if(ox != null) oxygen_amt = ox
|
||||
if(co != null) carbon_amt = co
|
||||
. = ..()
|
||||
|
||||
/obj/effect/spawner/newbomb/Initialize()
|
||||
..()
|
||||
|
||||
/obj/effect/spawner/newbomb/Initialize(newloc)
|
||||
..(newloc)
|
||||
var/obj/item/device/transfer_valve/V = new(src.loc)
|
||||
var/obj/item/weapon/tank/phoron/PT = new(V)
|
||||
var/obj/item/weapon/tank/oxygen/OT = new(V)
|
||||
@@ -100,11 +100,13 @@
|
||||
var/phoron_amt = 0
|
||||
var/oxygen_amt = 0
|
||||
|
||||
/obj/effect/spawner/onetankbomb/Initialize() //just needs an assembly.
|
||||
..()
|
||||
/obj/effect/spawner/onetankbomb/New(newloc) //just needs an assembly.
|
||||
..(newloc)
|
||||
|
||||
var/type = pick(/obj/item/weapon/tank/phoron/onetankbomb, /obj/item/weapon/tank/oxygen/onetankbomb)
|
||||
new type(src.loc)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/spawner/onetankbomb/full
|
||||
name = "Single-tank bomb"
|
||||
@@ -114,11 +116,13 @@
|
||||
// var/assembly_type = /obj/item/device/assembly/signaler
|
||||
|
||||
//Note that the maximum amount of gas you can put in a 70L air tank at 1013.25 kPa and 519K is 16.44 mol.
|
||||
/obj/effect/spawner/onetankbomb/full/Initialize() //just needs an assembly.
|
||||
. = ..()
|
||||
/obj/effect/spawner/onetankbomb/full/New(newloc) //just needs an assembly.
|
||||
..(newloc)
|
||||
|
||||
var/type = pick(/obj/item/weapon/tank/phoron/onetankbomb/full, /obj/item/weapon/tank/oxygen/onetankbomb/full)
|
||||
new type(src.loc)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/spawner/onetankbomb/frag
|
||||
name = "Single-tank bomb"
|
||||
@@ -128,8 +132,12 @@
|
||||
// var/assembly_type = /obj/item/device/assembly/signaler
|
||||
|
||||
//Note that the maximum amount of gas you can put in a 70L air tank at 1013.25 kPa and 519K is 16.44 mol.
|
||||
/obj/effect/spawner/onetankbomb/frag/Initialize() //just needs an assembly.
|
||||
. = ..()
|
||||
/obj/effect/spawner/onetankbomb/full/New(newloc) //just needs an assembly.
|
||||
..(newloc)
|
||||
|
||||
var/type = pick(/obj/item/weapon/tank/phoron/onetankbomb/full, /obj/item/weapon/tank/oxygen/onetankbomb/full)
|
||||
new type(src.loc)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
new type(src.loc)
|
||||
|
||||
qdel(src)
|
||||
|
||||
|
||||
|
||||
@@ -2,25 +2,25 @@
|
||||
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs/core)
|
||||
gibamounts = list(2,2,1)
|
||||
|
||||
/obj/effect/gibspawner/generic/Initialize()
|
||||
/obj/effect/gibspawner/generic/New()
|
||||
gibdirections = list(list(WEST, NORTHWEST, SOUTHWEST, NORTH),list(EAST, NORTHEAST, SOUTHEAST, SOUTH), list())
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/effect/gibspawner/human
|
||||
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs/down,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs/core)
|
||||
gibamounts = list(1,1,1,1,1,1,1)
|
||||
|
||||
/obj/effect/gibspawner/human/Initialize()
|
||||
/obj/effect/gibspawner/human/New()
|
||||
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), alldirs, alldirs, list())
|
||||
gibamounts[6] = pick(0,1,2)
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/effect/gibspawner/robot
|
||||
sparks = 1
|
||||
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/robot/up,/obj/effect/decal/cleanable/blood/gibs/robot/down,/obj/effect/decal/cleanable/blood/gibs/robot,/obj/effect/decal/cleanable/blood/gibs/robot,/obj/effect/decal/cleanable/blood/gibs/robot,/obj/effect/decal/cleanable/blood/gibs/robot/limb)
|
||||
gibamounts = list(1,1,1,1,1,1)
|
||||
|
||||
/obj/effect/gibspawner/robot/Initialize()
|
||||
/obj/effect/gibspawner/robot/New()
|
||||
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), alldirs, alldirs)
|
||||
gibamounts[6] = pick(0,1,2)
|
||||
. = ..()
|
||||
..()
|
||||
@@ -104,9 +104,9 @@
|
||||
START_PROCESSING(SSobj, src)
|
||||
return ..()
|
||||
|
||||
/obj/effect/spider/eggcluster/Initialize(var/ml, var/atom/parent)
|
||||
/obj/effect/spider/eggcluster/New(var/location, var/atom/parent)
|
||||
get_light_and_color(parent)
|
||||
. = ..(ml)
|
||||
..()
|
||||
|
||||
/obj/effect/spider/eggcluster/Destroy()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
@@ -169,7 +169,7 @@
|
||||
/mob/living/simple_mob/animal/giant_spider/webslinger, /mob/living/simple_mob/animal/giant_spider/phorogenic, /mob/living/simple_mob/animal/giant_spider/carrier,
|
||||
/mob/living/simple_mob/animal/giant_spider/ion)
|
||||
|
||||
/obj/effect/spider/spiderling/Initialize(var/ml, var/atom/parent)
|
||||
/obj/effect/spider/spiderling/New(var/location, var/atom/parent)
|
||||
pixel_x = rand(6,-6)
|
||||
pixel_y = rand(6,-6)
|
||||
START_PROCESSING(SSobj, src)
|
||||
@@ -177,7 +177,7 @@
|
||||
if(amount_grown != -1 && prob(50))
|
||||
amount_grown = 1
|
||||
get_light_and_color(parent)
|
||||
. = ..(ml)
|
||||
..()
|
||||
|
||||
/obj/effect/spider/spiderling/Destroy()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
@@ -314,9 +314,8 @@
|
||||
icon_state = "cocoon1"
|
||||
health = 60
|
||||
|
||||
/obj/effect/spider/cocoon/Initialize()
|
||||
. = ..()
|
||||
icon_state = pick("cocoon1","cocoon2","cocoon3")
|
||||
/obj/effect/spider/cocoon/New()
|
||||
icon_state = pick("cocoon1","cocoon2","cocoon3")
|
||||
|
||||
/obj/effect/spider/cocoon/Destroy()
|
||||
src.visible_message("<span class='warning'>\The [src] splits open.</span>")
|
||||
|
||||
@@ -188,8 +188,8 @@ var/global/list/tele_landmarks = list() // Terrible, but the alternative is loop
|
||||
/obj/effect/landmark/teleport_mark
|
||||
var/landmark_id = null
|
||||
|
||||
/obj/effect/landmark/teleport_mark/Initialize()
|
||||
. = ..()
|
||||
/obj/effect/landmark/teleport_mark/New()
|
||||
..()
|
||||
tele_landmarks += src
|
||||
|
||||
/obj/effect/landmark/teleport_mark/Destroy()
|
||||
|
||||
@@ -97,7 +97,6 @@
|
||||
duration = 15
|
||||
|
||||
/obj/effect/temp_visual/heal/Initialize(mapload)
|
||||
. = ..()
|
||||
pixel_x = rand(-12, 12)
|
||||
pixel_y = rand(-9, 0)
|
||||
// VOREStation Add End
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
/obj/effect/projectile_lighting
|
||||
var/owner
|
||||
|
||||
/obj/effect/projectile_lighting/Initialize(var/ml, color, range, intensity, owner_key)
|
||||
. = ..(ml)
|
||||
/obj/effect/projectile_lighting/New(loc, color, range, intensity, owner_key)
|
||||
. = ..()
|
||||
set_light(range, intensity, color)
|
||||
owner = owner_key
|
||||
|
||||
@@ -109,8 +109,8 @@
|
||||
|
||||
var/no_random_knockdown = FALSE //stops item from being able to randomly knock people down in combat
|
||||
|
||||
/obj/item/Initialize()
|
||||
. = ..()
|
||||
/obj/item/New()
|
||||
..()
|
||||
if(embed_chance < 0)
|
||||
if(sharp)
|
||||
embed_chance = max(5, round(force/w_class))
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
var/searching = FALSE
|
||||
var/datum/effect/effect/system/spark_spread/sparks
|
||||
|
||||
/obj/item/weapon/antag_spawner/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/antag_spawner/New()
|
||||
..()
|
||||
sparks = new /datum/effect/effect/system/spark_spread()
|
||||
sparks.set_up(5, 0, src)
|
||||
sparks.attach(loc)
|
||||
|
||||
@@ -13,12 +13,12 @@
|
||||
var/detect_state = PROXIMITY_NONE
|
||||
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2, TECH_ILLEGAL = 2)
|
||||
|
||||
/obj/item/device/multitool/ai_detector/Initialize()
|
||||
/obj/item/device/multitool/ai_detector/New()
|
||||
// It's really really unlikely for the view range to change. But why not be futureproof anyways?
|
||||
range_alert = world.view
|
||||
range_warning = world.view * 2
|
||||
START_PROCESSING(SSobj, src)
|
||||
return ..()
|
||||
..()
|
||||
|
||||
/obj/item/device/multitool/ai_detector/Destroy()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
|
||||
@@ -262,8 +262,12 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
|
||||
var/datum/exonet_protocol/exonet = null
|
||||
var/list/exonet_messages = list()
|
||||
|
||||
/mob/observer/dead/proc/init_exonet()
|
||||
set waitfor = FALSE
|
||||
// Proc: New()
|
||||
// Parameters: None
|
||||
// Description: Gives ghosts an exonet address based on their key and ghost name.
|
||||
/mob/observer/dead/Initialize()
|
||||
. = ..()
|
||||
exonet = new(src)
|
||||
if(client)
|
||||
exonet.make_address("communicator-[src.client]-[src.client.prefs.real_name]")
|
||||
else
|
||||
@@ -344,8 +348,8 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
|
||||
/obj/machinery/camera/communicator
|
||||
network = list(NETWORK_COMMUNICATORS)
|
||||
|
||||
/obj/machinery/camera/communicator/Initialize()
|
||||
. = ..()
|
||||
/obj/machinery/camera/communicator/New()
|
||||
..()
|
||||
client_huds |= global_hud.whitense
|
||||
client_huds |= global_hud.darkMask
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
/obj/item/device/defib_kit/get_cell()
|
||||
return bcell
|
||||
|
||||
/obj/item/device/defib_kit/Initialize() //starts without a cell for rnd
|
||||
. = ..()
|
||||
/obj/item/device/defib_kit/New() //starts without a cell for rnd
|
||||
..()
|
||||
if(ispath(paddles))
|
||||
paddles = new paddles(src, src)
|
||||
else
|
||||
@@ -590,9 +590,9 @@
|
||||
/obj/item/weapon/shockpaddles/linked
|
||||
var/obj/item/device/defib_kit/base_unit
|
||||
|
||||
/obj/item/weapon/shockpaddles/linked/Initialize(var/ml, obj/item/device/defib_kit/defib)
|
||||
/obj/item/weapon/shockpaddles/linked/New(newloc, obj/item/device/defib_kit/defib)
|
||||
base_unit = defib
|
||||
. = ..()
|
||||
..(newloc)
|
||||
|
||||
/obj/item/weapon/shockpaddles/linked/Destroy()
|
||||
if(base_unit)
|
||||
|
||||
@@ -362,9 +362,9 @@
|
||||
pickup_sound = 'sound/items/pickup/gloves.ogg'
|
||||
light_system = MOVABLE_LIGHT
|
||||
|
||||
/obj/item/device/flashlight/flare/Initialize()
|
||||
/obj/item/device/flashlight/flare/New()
|
||||
fuel = rand(800, 1000) // Sorry for changing this so much but I keep under-estimating how long X number of ticks last in seconds.
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/device/flashlight/flare/process()
|
||||
var/turf/pos = get_turf(src)
|
||||
@@ -425,9 +425,9 @@
|
||||
var/fuel = 0
|
||||
power_use = 0
|
||||
|
||||
/obj/item/device/flashlight/glowstick/Initialize()
|
||||
/obj/item/device/flashlight/glowstick/New()
|
||||
fuel = rand(1600, 2000)
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/device/flashlight/glowstick/process()
|
||||
fuel = max(fuel - 1, 0)
|
||||
@@ -491,30 +491,3 @@
|
||||
light_range = 8
|
||||
light_power = 0.1
|
||||
light_color = "#49F37C"
|
||||
|
||||
/*
|
||||
* Slime Extract
|
||||
*/
|
||||
|
||||
/obj/item/device/flashlight/slime
|
||||
gender = PLURAL
|
||||
name = "glowing slime extract"
|
||||
desc = "A slimy ball that appears to be glowing from bioluminesence."
|
||||
icon = 'icons/obj/lighting.dmi'
|
||||
icon_state = "floor1" //not a slime extract sprite but... something close enough!
|
||||
item_state = "slime"
|
||||
light_color = "#FFF423"
|
||||
w_class = ITEMSIZE_TINY
|
||||
light_range = 6
|
||||
on = 1 //Bio-luminesence has one setting, on.
|
||||
power_use = 0
|
||||
|
||||
/obj/item/device/flashlight/slime/Initialize()
|
||||
. = ..()
|
||||
set_light(light_range, light_power, light_color)
|
||||
|
||||
/obj/item/device/flashlight/slime/update_brightness()
|
||||
return
|
||||
|
||||
/obj/item/device/flashlight/slime/attack_self(mob/user)
|
||||
return //Bio-luminescence does not toggle.
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
var/list/supported_types
|
||||
var/datum/tgui_state/default/must_hack/hack_state
|
||||
|
||||
/obj/item/device/multitool/hacktool/Initialize()
|
||||
. = ..()
|
||||
/obj/item/device/multitool/hacktool/New()
|
||||
..()
|
||||
known_targets = list()
|
||||
max_known_targets = 5 + rand(1,3)
|
||||
supported_types = list(/obj/machinery/door/airlock)
|
||||
|
||||
@@ -29,14 +29,14 @@
|
||||
/obj/item/device/laser_pointer/purple
|
||||
pointer_icon_state = "purple_laser"
|
||||
|
||||
/obj/item/device/laser_pointer/Initialize()
|
||||
. = ..()
|
||||
/obj/item/device/laser_pointer/New()
|
||||
..()
|
||||
diode = new(src)
|
||||
if(!pointer_icon_state)
|
||||
pointer_icon_state = pick("red_laser","green_laser","blue_laser","purple_laser")
|
||||
|
||||
/obj/item/device/laser_pointer/upgraded/Initialize()
|
||||
. = ..()
|
||||
/obj/item/device/laser_pointer/upgraded/New()
|
||||
..()
|
||||
diode = new /obj/item/weapon/stock_parts/micro_laser/ultra
|
||||
|
||||
|
||||
|
||||
@@ -59,9 +59,9 @@
|
||||
// when we get this many shards, we get a free bulb.
|
||||
var/shards_required = 4
|
||||
|
||||
/obj/item/device/lightreplacer/Initialize()
|
||||
/obj/item/device/lightreplacer/New()
|
||||
failmsg = "The [name]'s refill light blinks red."
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/device/lightreplacer/examine(mob/user)
|
||||
. = ..()
|
||||
|
||||
@@ -43,8 +43,8 @@ GLOBAL_LIST_BOILERPLATE(all_pai_cards, /obj/item/device/paicard)
|
||||
if(istype(rig))
|
||||
rig.forced_move(direction, user)
|
||||
|
||||
/obj/item/device/paicard/Initialize()
|
||||
. = ..()
|
||||
/obj/item/device/paicard/New()
|
||||
..()
|
||||
add_overlay("pai-off")
|
||||
|
||||
/obj/item/device/paicard/Destroy()
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
var/list/modes
|
||||
var/mode
|
||||
|
||||
/obj/item/device/pipe_painter/Initialize()
|
||||
. = ..()
|
||||
/obj/item/device/pipe_painter/New()
|
||||
..()
|
||||
modes = new()
|
||||
for(var/C in pipe_colors)
|
||||
modes += "[C]"
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
drop_sound = 'sound/items/drop/component.ogg'
|
||||
pickup_sound = 'sound/items/pickup/component.ogg'
|
||||
|
||||
/obj/item/device/radio/headset/Initialize()
|
||||
. = ..()
|
||||
/obj/item/device/radio/headset/New()
|
||||
..()
|
||||
internal_channels.Cut()
|
||||
if(ks1type)
|
||||
keyslot1 = new ks1type(src)
|
||||
@@ -428,11 +428,14 @@
|
||||
if(keyslot2.syndie)
|
||||
src.syndie = 1
|
||||
|
||||
if(!radio_controller)
|
||||
src.name = "broken radio headset"
|
||||
return
|
||||
|
||||
for (var/ch_name in channels)
|
||||
if(!radio_controller)
|
||||
sleep(30) // Waiting for the radio_controller to be created.
|
||||
if(!radio_controller)
|
||||
src.name = "broken radio headset"
|
||||
return
|
||||
|
||||
secure_radio_connections[ch_name] = radio_controller.add_object(src, radiochannels[ch_name], RADIO_CHAT)
|
||||
|
||||
if(setDescription)
|
||||
|
||||
@@ -75,23 +75,23 @@
|
||||
channels = radiochannels.Copy()
|
||||
return ..()
|
||||
|
||||
/obj/item/device/radio/intercom/Initialize()
|
||||
. = ..()
|
||||
/obj/item/device/radio/intercom/New()
|
||||
..()
|
||||
circuit = new circuit(src)
|
||||
|
||||
/obj/item/device/radio/intercom/department/medbay/Initialize()
|
||||
. = ..()
|
||||
/obj/item/device/radio/intercom/department/medbay/New()
|
||||
..()
|
||||
internal_channels = default_medbay_channels.Copy()
|
||||
|
||||
/obj/item/device/radio/intercom/department/security/Initialize()
|
||||
. = ..()
|
||||
/obj/item/device/radio/intercom/department/security/New()
|
||||
..()
|
||||
internal_channels = list(
|
||||
num2text(PUB_FREQ) = list(),
|
||||
num2text(SEC_I_FREQ) = list(access_security)
|
||||
)
|
||||
|
||||
/obj/item/device/radio/intercom/entertainment/Initialize()
|
||||
. = ..()
|
||||
/obj/item/device/radio/intercom/entertainment/New()
|
||||
..()
|
||||
internal_channels = list(
|
||||
num2text(PUB_FREQ) = list(),
|
||||
num2text(ENT_FREQ) = list()
|
||||
@@ -104,8 +104,8 @@
|
||||
subspace_transmission = 1
|
||||
syndie = 1
|
||||
|
||||
/obj/item/device/radio/intercom/syndicate/Initialize()
|
||||
. = ..()
|
||||
/obj/item/device/radio/intercom/syndicate/New()
|
||||
..()
|
||||
internal_channels[num2text(SYND_FREQ)] = list(access_syndicate)
|
||||
|
||||
/obj/item/device/radio/intercom/raider
|
||||
@@ -115,8 +115,8 @@
|
||||
subspace_transmission = 1
|
||||
syndie = 1
|
||||
|
||||
/obj/item/device/radio/intercom/raider/Initialize()
|
||||
. = ..()
|
||||
/obj/item/device/radio/intercom/raider/New()
|
||||
..()
|
||||
internal_channels[num2text(RAID_FREQ)] = list(access_syndicate)
|
||||
|
||||
/obj/item/device/radio/intercom/attack_ai(mob/user as mob)
|
||||
|
||||
@@ -27,8 +27,7 @@ var/global/list/active_radio_jammers = list()
|
||||
|
||||
origin_tech = list(TECH_ILLEGAL = 7, TECH_BLUESPACE = 5) //Such technology! Subspace jamming!
|
||||
|
||||
/obj/item/device/radio_jammer/Initialize()
|
||||
. = ..()
|
||||
/obj/item/device/radio_jammer/New()
|
||||
power_source = new(src)
|
||||
update_icon() // So it starts with the full overlay.
|
||||
|
||||
|
||||
@@ -73,6 +73,12 @@ var/global/list/default_medbay_channels = list(
|
||||
frequency = new_frequency
|
||||
radio_connection = radio_controller.add_object(src, frequency, RADIO_CHAT)
|
||||
|
||||
/obj/item/device/radio/New()
|
||||
..()
|
||||
wires = new(src)
|
||||
internal_channels = default_internal_channels.Copy()
|
||||
listening_objects += src
|
||||
|
||||
/obj/item/device/radio/Destroy()
|
||||
qdel(wires)
|
||||
wires = null
|
||||
@@ -83,13 +89,9 @@ var/global/list/default_medbay_channels = list(
|
||||
radio_controller.remove_object(src, radiochannels[ch_name])
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/device/radio/Initialize()
|
||||
. = ..()
|
||||
|
||||
wires = new(src)
|
||||
internal_channels = default_internal_channels.Copy()
|
||||
listening_objects += src
|
||||
|
||||
if(frequency < RADIO_LOW_FREQ || frequency > RADIO_HIGH_FREQ)
|
||||
frequency = sanitize_frequency(frequency, RADIO_LOW_FREQ, RADIO_HIGH_FREQ)
|
||||
set_frequency(frequency)
|
||||
@@ -755,6 +757,6 @@ GLOBAL_DATUM(autospeaker, /mob/living/silicon/ai/announcer)
|
||||
/obj/item/device/radio/phone/medbay
|
||||
frequency = MED_I_FREQ
|
||||
|
||||
/obj/item/device/radio/phone/medbay/Initialize()
|
||||
. = ..()
|
||||
/obj/item/device/radio/phone/medbay/New()
|
||||
..()
|
||||
internal_channels = default_medbay_channels.Copy()
|
||||
|
||||
@@ -1,327 +1,327 @@
|
||||
#define DEFIB_TIME_LIMIT (10 MINUTES) //VOREStation addition- past this many seconds, defib is useless.
|
||||
|
||||
/obj/item/device/healthanalyzer
|
||||
name = "health analyzer"
|
||||
desc = "A hand-held body scanner able to distinguish vital signs of the subject."
|
||||
icon_state = "health"
|
||||
item_state = "healthanalyzer"
|
||||
slot_flags = SLOT_BELT
|
||||
throwforce = 3
|
||||
w_class = ITEMSIZE_SMALL
|
||||
throw_speed = 5
|
||||
throw_range = 10
|
||||
matter = list(MAT_STEEL = 200)
|
||||
origin_tech = list(TECH_MAGNET = 1, TECH_BIO = 1)
|
||||
var/mode = 1;
|
||||
var/advscan = 0
|
||||
var/showadvscan = 1
|
||||
|
||||
/obj/item/device/healthanalyzer/Initialize()
|
||||
if(advscan >= 1)
|
||||
verbs += /obj/item/device/healthanalyzer/proc/toggle_adv
|
||||
. = ..()
|
||||
|
||||
/obj/item/device/healthanalyzer/do_surgery(mob/living/M, mob/living/user)
|
||||
if(user.a_intent != I_HELP) //in case it is ever used as a surgery tool
|
||||
return ..()
|
||||
scan_mob(M, user) //default surgery behaviour is just to scan as usual
|
||||
return 1
|
||||
|
||||
/obj/item/device/healthanalyzer/attack(mob/living/M, mob/living/user)
|
||||
scan_mob(M, user)
|
||||
|
||||
/obj/item/device/healthanalyzer/proc/scan_mob(mob/living/M, mob/living/user)
|
||||
var/dat = ""
|
||||
if ((CLUMSY in user.mutations) && prob(50))
|
||||
user.visible_message("<span class='warning'>\The [user] has analyzed the floor's vitals!</span>", "<span class='warning'>You try to analyze the floor's vitals!</span>")
|
||||
dat += "Analyzing Results for the floor:<br>"
|
||||
dat += "Overall Status: Healthy<br>"
|
||||
dat += "\tDamage Specifics: 0-0-0-0<br>"
|
||||
dat += "Key: Suffocation/Toxin/Burns/Brute<br>"
|
||||
dat += "Body Temperature: ???"
|
||||
user.show_message("<span class='notice'>[dat]</span>", 1)
|
||||
return
|
||||
if (!user.IsAdvancedToolUser())
|
||||
to_chat(user, "<span class='warning'>You don't have the dexterity to do this!</span>")
|
||||
return
|
||||
|
||||
flick("[icon_state]-scan", src) //makes it so that it plays the scan animation on a succesful scan
|
||||
user.visible_message("<span class='notice'>[user] has analyzed [M]'s vitals.</span>","<span class='notice'>You have analyzed [M]'s vitals.</span>")
|
||||
|
||||
if (!ishuman(M) || M.isSynthetic())
|
||||
//these sensors are designed for organic life
|
||||
dat += "<span class='notice'>Analyzing Results for ERROR:\n\tOverall Status: ERROR<br>"
|
||||
dat += "\tKey: <font color='cyan'>Suffocation</font>/<font color='green'>Toxin</font>/<font color='#FFA500'>Burns</font>/<font color='red'>Brute</font><br>"
|
||||
dat += "\tDamage Specifics: <font color='cyan'>?</font> - <font color='green'>?</font> - <font color='#FFA500'>?</font> - <font color='red'>?</font><br>"
|
||||
dat += "Body Temperature: [M.bodytemperature-T0C]°C ([M.bodytemperature*1.8-459.67]°F)</span><br>"
|
||||
dat += "<span class='warning'>Warning: Blood Level ERROR: --% --cl.</span> <span class='notice'>Type: ERROR</span><br>"
|
||||
dat += "<span class='notice'>Subject's pulse: <font color='red'>-- bpm.</font></span>"
|
||||
user.show_message(dat, 1)
|
||||
return
|
||||
|
||||
var/fake_oxy = max(rand(1,40), M.getOxyLoss(), (300 - (M.getToxLoss() + M.getFireLoss() + M.getBruteLoss())))
|
||||
var/OX = M.getOxyLoss() > 50 ? "<b>[M.getOxyLoss()]</b>" : M.getOxyLoss()
|
||||
var/TX = M.getToxLoss() > 50 ? "<b>[M.getToxLoss()]</b>" : M.getToxLoss()
|
||||
var/BU = M.getFireLoss() > 50 ? "<b>[M.getFireLoss()]</b>" : M.getFireLoss()
|
||||
var/BR = M.getBruteLoss() > 50 ? "<b>[M.getBruteLoss()]</b>" : M.getBruteLoss()
|
||||
if(M.status_flags & FAKEDEATH)
|
||||
OX = fake_oxy > 50 ? "<b>[fake_oxy]</b>" : fake_oxy
|
||||
dat += "<span class='notice'>Analyzing Results for [M]:</span><br>"
|
||||
dat += "<span class='notice'>Overall Status: dead</span><br>"
|
||||
else
|
||||
dat += "<span class='notice'>Analyzing Results for [M]:\n\t Overall Status: [M.stat > 1 ? "dead" : "[round((M.health/M.getMaxHealth())*100) ]% healthy"]<br>"
|
||||
dat += "\tKey: <font color='cyan'>Suffocation</font>/<font color='green'>Toxin</font>/<font color='#FFA500'>Burns</font>/<font color='red'>Brute</font><br>"
|
||||
dat += "\tDamage Specifics: <font color='cyan'>[OX]</font> - <font color='green'>[TX]</font> - <font color='#FFA500'>[BU]</font> - <font color='red'>[BR]</font><br>"
|
||||
dat += "Body Temperature: [M.bodytemperature-T0C]°C ([M.bodytemperature*1.8-459.67]°F)</span><br>"
|
||||
//VOREStation edit/addition starts
|
||||
if(M.timeofdeath && (M.stat == DEAD || (M.status_flags & FAKEDEATH)))
|
||||
dat += "<span class='notice'>Time of Death: [worldtime2stationtime(M.timeofdeath)]</span><br>"
|
||||
var/tdelta = round(world.time - M.timeofdeath)
|
||||
if(tdelta < (DEFIB_TIME_LIMIT * 10))
|
||||
dat += "<span class='notice'><b>Subject died [DisplayTimeText(tdelta)] ago - resuscitation may be possible!</b></span><br>"
|
||||
//VOREStation edit/addition ends
|
||||
if(istype(M, /mob/living/carbon/human) && mode == 1)
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/list/damaged = H.get_damaged_organs(1,1)
|
||||
dat += "<span class='notice'>Localized Damage, Brute/Burn:</span><br>"
|
||||
if(length(damaged)>0)
|
||||
for(var/obj/item/organ/external/org in damaged)
|
||||
if(org.robotic >= ORGAN_ROBOT)
|
||||
continue
|
||||
else
|
||||
dat += "<span class='notice'> [capitalize(org.name)]: [(org.brute_dam > 0) ? "<span class='warning'>[org.brute_dam]</span>" : 0]"
|
||||
dat += "[(org.status & ORGAN_BLEEDING)?"<span class='danger'>\[Bleeding\]</span>":""] - "
|
||||
dat += "[(org.burn_dam > 0) ? "<font color='#FFA500'>[org.burn_dam]</font>" : 0]</span><br>"
|
||||
else
|
||||
dat += "<span class='notice'> Limbs are OK.</span><br>"
|
||||
|
||||
OX = M.getOxyLoss() > 50 ? "<font color='cyan'><b>Severe oxygen deprivation detected</b></font>" : "Subject bloodstream oxygen level normal"
|
||||
TX = M.getToxLoss() > 50 ? "<font color='green'><b>Dangerous amount of toxins detected</b></font>" : "Subject bloodstream toxin level minimal"
|
||||
BU = M.getFireLoss() > 50 ? "<font color='#FFA500'><b>Severe burn damage detected</b></font>" : "Subject burn injury status O.K"
|
||||
BR = M.getBruteLoss() > 50 ? "<font color='red'><b>Severe anatomical damage detected</b></font>" : "Subject brute-force injury status O.K"
|
||||
if(M.status_flags & FAKEDEATH)
|
||||
OX = fake_oxy > 50 ? "<span class='warning'>Severe oxygen deprivation detected</span>" : "Subject bloodstream oxygen level normal"
|
||||
dat += "[OX] | [TX] | [BU] | [BR]<br>"
|
||||
if(M.radiation)
|
||||
if(advscan >= 2 && showadvscan == 1)
|
||||
var/severity = ""
|
||||
if(M.radiation >= 75)
|
||||
severity = "Critical"
|
||||
else if(M.radiation >= 50)
|
||||
severity = "Severe"
|
||||
else if(M.radiation >= 25)
|
||||
severity = "Moderate"
|
||||
else if(M.radiation >= 1)
|
||||
severity = "Low"
|
||||
dat += "<span class='warning'>[severity] levels of radiation detected. [(severity == "Critical") ? " Immediate treatment advised." : ""]</span><br>"
|
||||
else
|
||||
dat += "<span class='warning'>Radiation detected.</span><br>"
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/C = M
|
||||
if(C.reagents.total_volume)
|
||||
var/unknown = 0
|
||||
var/reagentdata[0]
|
||||
var/unknownreagents[0]
|
||||
for(var/datum/reagent/R as anything in C.reagents.reagent_list)
|
||||
if(R.scannable)
|
||||
reagentdata["[R.id]"] = "<span class='notice'>\t[round(C.reagents.get_reagent_amount(R.id), 1)]u [R.name][(R.overdose && R.volume > R.overdose) ? " - <span class='danger'>Overdose</span>" : ""]</span><br>"
|
||||
else
|
||||
unknown++
|
||||
unknownreagents["[R.id]"] = "<span class='notice'>\t[round(C.reagents.get_reagent_amount(R.id), 1)]u [R.name][(R.overdose && R.volume > R.overdose) ? " - <span class='danger'>Overdose</span>" : ""]</span><br>"
|
||||
if(reagentdata.len)
|
||||
dat += "<span class='notice'>Beneficial reagents detected in subject's blood:</span><br>"
|
||||
for(var/d in reagentdata)
|
||||
dat += reagentdata[d]
|
||||
if(unknown)
|
||||
if(advscan >= 3 && showadvscan == 1)
|
||||
dat += "<span class='warning'>Warning: Non-medical reagent[(unknown>1)?"s":""] detected in subject's blood:</span><br>"
|
||||
for(var/d in unknownreagents)
|
||||
dat += unknownreagents[d]
|
||||
else
|
||||
dat += "<span class='warning'>Warning: Unknown substance[(unknown>1)?"s":""] detected in subject's blood.</span><br>"
|
||||
if(C.ingested && C.ingested.total_volume)
|
||||
var/unknown = 0
|
||||
var/stomachreagentdata[0]
|
||||
var/stomachunknownreagents[0]
|
||||
for(var/datum/reagent/R as anything in C.ingested.reagent_list)
|
||||
if(R.scannable)
|
||||
stomachreagentdata["[R.id]"] = "<span class='notice'>\t[round(C.ingested.get_reagent_amount(R.id), 1)]u [R.name][(R.overdose && R.volume > R.overdose) ? " - <span class='danger'>Overdose</span>" : ""]</span><br>"
|
||||
if (advscan == 0 || showadvscan == 0)
|
||||
dat += "<span class='notice'>[R.name] found in subject's stomach.</span><br>"
|
||||
else
|
||||
++unknown
|
||||
stomachunknownreagents["[R.id]"] = "<span class='notice'>\t[round(C.ingested.get_reagent_amount(R.id), 1)]u [R.name][(R.overdose && R.volume > R.overdose) ? " - <span class='danger'>Overdose</span>" : ""]</span><br>"
|
||||
if(advscan >= 1 && showadvscan == 1)
|
||||
dat += "<span class='notice'>Beneficial reagents detected in subject's stomach:</span><br>"
|
||||
for(var/d in stomachreagentdata)
|
||||
dat += stomachreagentdata[d]
|
||||
if(unknown)
|
||||
if(advscan >= 3 && showadvscan == 1)
|
||||
dat += "<span class='warning'>Warning: Non-medical reagent[(unknown > 1)?"s":""] found in subject's stomach:</span><br>"
|
||||
for(var/d in stomachunknownreagents)
|
||||
dat += stomachunknownreagents[d]
|
||||
else
|
||||
dat += "<span class='warning'>Unknown substance[(unknown > 1)?"s":""] found in subject's stomach.</span><br>"
|
||||
if(C.touching && C.touching.total_volume)
|
||||
var/unknown = 0
|
||||
var/touchreagentdata[0]
|
||||
var/touchunknownreagents[0]
|
||||
for(var/datum/reagent/R as anything in C.touching.reagent_list)
|
||||
if(R.scannable)
|
||||
touchreagentdata["[R.id]"] = "<span class='notice'>\t[round(C.touching.get_reagent_amount(R.id), 1)]u [R.name][(R.overdose && R.can_overdose_touch && R.volume > R.overdose) ? " - <span class='danger'>Overdose</span>" : ""]</span><br>"
|
||||
if (advscan == 0 || showadvscan == 0)
|
||||
dat += "<span class='notice'>[R.name] found in subject's dermis.</span><br>"
|
||||
else
|
||||
++unknown
|
||||
touchunknownreagents["[R.id]"] = "<span class='notice'>\t[round(C.ingested.get_reagent_amount(R.id), 1)]u [R.name][(R.overdose && R.can_overdose_touch && R.volume > R.overdose) ? " - <span class='danger'>Overdose</span>" : ""]</span><br>"
|
||||
if(advscan >= 1 && showadvscan == 1)
|
||||
dat += "<span class='notice'>Beneficial reagents detected in subject's dermis:</span><br>"
|
||||
for(var/d in touchreagentdata)
|
||||
dat += touchreagentdata[d]
|
||||
if(unknown)
|
||||
if(advscan >= 3 && showadvscan == 1)
|
||||
dat += "<span class='warning'>Warning: Non-medical reagent[(unknown > 1)?"s":""] found in subject's dermis:</span><br>"
|
||||
for(var/d in touchunknownreagents)
|
||||
dat += touchunknownreagents[d]
|
||||
else
|
||||
dat += "<span class='warning'>Unknown substance[(unknown > 1)?"s":""] found in subject's dermis.</span><br>"
|
||||
if(C.virus2.len)
|
||||
for (var/ID in C.virus2)
|
||||
if (ID in virusDB)
|
||||
var/datum/data/record/V = virusDB[ID]
|
||||
dat += "<span class='warning'>Warning: Pathogen [V.fields["name"]] detected in subject's blood. Known antigen : [V.fields["antigen"]]</span><br>"
|
||||
else
|
||||
dat += "<span class='warning'>Warning: Unknown pathogen detected in subject's blood.</span><br>"
|
||||
if (M.getCloneLoss())
|
||||
dat += "<span class='warning'>Subject appears to have been imperfectly cloned.</span><br>"
|
||||
// if (M.reagents && M.reagents.get_reagent_amount("inaprovaline"))
|
||||
// user.show_message("<span class='notice'>Bloodstream Analysis located [M.reagents:get_reagent_amount("inaprovaline")] units of rejuvenation chemicals.</span>")
|
||||
if (M.has_brain_worms())
|
||||
dat += "<span class='warning'>Subject suffering from aberrant brain activity. Recommend further scanning.</span><br>"
|
||||
else if (M.getBrainLoss() >= 60 || !M.has_brain())
|
||||
dat += "<span class='warning'>Subject is brain dead.</span><br>"
|
||||
else if (M.getBrainLoss() >= 25)
|
||||
dat += "<span class='warning'>Severe brain damage detected. Subject likely to have a traumatic brain injury.</span><br>"
|
||||
else if (M.getBrainLoss() >= 10)
|
||||
dat += "<span class='warning'>Significant brain damage detected. Subject may have had a concussion.</span><br>"
|
||||
else if (M.getBrainLoss() >= 1 && advscan >= 2 && showadvscan == 1)
|
||||
dat += "<span class='warning'>Minor brain damage detected.</span><br>"
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
for(var/obj/item/organ/internal/appendix/a in H.internal_organs)
|
||||
var/severity = ""
|
||||
if(a.inflamed > 3)
|
||||
severity = "Severe"
|
||||
else if(a.inflamed > 2)
|
||||
severity = "Moderate"
|
||||
else if(a.inflamed >= 1)
|
||||
severity = "Mild"
|
||||
if(severity)
|
||||
dat += "<span class='warning'>[severity] inflammation detected in subject [a.name].</span><br>"
|
||||
// Infections, fractures, and IB
|
||||
var/basic_fracture = 0 // If it's a basic scanner
|
||||
var/basic_ib = 0 // If it's a basic scanner
|
||||
var/fracture_dat = "" // All the fractures
|
||||
var/infection_dat = "" // All the infections
|
||||
var/ib_dat = "" // All the IB
|
||||
for(var/obj/item/organ/external/e in H.organs)
|
||||
if(!e)
|
||||
continue
|
||||
// Broken limbs
|
||||
if(e.status & ORGAN_BROKEN)
|
||||
if((e.name in list(BP_L_ARM, BP_R_ARM, BP_L_LEG, BP_R_LEG, BP_HEAD, BP_TORSO, BP_GROIN)) && (!e.splinted))
|
||||
fracture_dat += "<span class='warning'>Unsecured fracture in subject [e.name]. Splinting recommended for transport.</span><br>"
|
||||
else if(advscan >= 1 && showadvscan == 1)
|
||||
fracture_dat += "<span class='warning'>Bone fractures detected in subject [e.name].</span><br>"
|
||||
else
|
||||
basic_fracture = 1
|
||||
// Infections
|
||||
if(e.has_infected_wound())
|
||||
dat += "<span class='warning'>Infected wound detected in subject [e.name]. Disinfection recommended.</span><br>"
|
||||
// IB
|
||||
for(var/datum/wound/W in e.wounds)
|
||||
if(W.internal)
|
||||
if(advscan >= 1 && showadvscan == 1)
|
||||
ib_dat += "<span class='warning'>Internal bleeding detected in subject [e.name].</span><br>"
|
||||
else
|
||||
basic_ib = 1
|
||||
if(basic_fracture)
|
||||
fracture_dat += "<span class='warning'>Bone fractures detected. Advanced scanner required for location.</span><br>"
|
||||
if(basic_ib)
|
||||
ib_dat += "<span class='warning'>Internal bleeding detected. Advanced scanner required for location.</span><br>"
|
||||
dat += fracture_dat
|
||||
dat += infection_dat
|
||||
dat += ib_dat
|
||||
|
||||
// Blood level
|
||||
if(M:vessel)
|
||||
var/blood_volume = H.vessel.get_reagent_amount("blood")
|
||||
var/blood_percent = round((blood_volume / H.species.blood_volume)*100)
|
||||
var/blood_type = H.dna.b_type
|
||||
if(blood_volume <= H.species.blood_volume*H.species.blood_level_danger)
|
||||
dat += "<span class='danger'><i>Warning: Blood Level CRITICAL: [blood_percent]% [blood_volume]cl. Type: [blood_type]</i></span><br>"
|
||||
else if(blood_volume <= H.species.blood_volume*H.species.blood_level_warning)
|
||||
dat += "<span class='danger'><i>Warning: Blood Level VERY LOW: [blood_percent]% [blood_volume]cl. Type: [blood_type]</i></span><br>"
|
||||
else if(blood_volume <= H.species.blood_volume*H.species.blood_level_safe)
|
||||
dat += "<span class='danger'>Warning: Blood Level LOW: [blood_percent]% [blood_volume]cl. Type: [blood_type]</span><br>"
|
||||
else
|
||||
dat += "<span class='notice'>Blood Level Normal: [blood_percent]% [blood_volume]cl. Type: [blood_type]</span><br>"
|
||||
dat += "<span class='notice'>Subject's pulse: <font color='[H.pulse == PULSE_THREADY || H.pulse == PULSE_NONE ? "red" : "blue"]'>[H.get_pulse(GETPULSE_TOOL)] bpm.</font></span><br>" // VORE Edit: Missed a linebreak here.
|
||||
if(istype(H.species, /datum/species/xenochimera)) // VOREStation Edit Start: Visible feedback for medmains on Xenochimera.
|
||||
if(H.stat == DEAD && H.revive_ready == REVIVING_READY && !H.hasnutriment())
|
||||
dat += "<span class='danger'>WARNING: Protein levels low. Subject incapable of reconstitution.</span>"
|
||||
else if(H.revive_ready == REVIVING_NOW)
|
||||
dat += "<span class='warning'>Subject is undergoing form reconstruction. Estimated time to finish is in: [round((H.revive_finished - world.time) / 10)] seconds.</span>"
|
||||
else if(H.revive_ready == REVIVING_DONE)
|
||||
dat += "<span class='notice'>Subject is ready to hatch. Transfer to dark room for holding with food available.</span>"
|
||||
else if(H.stat == DEAD)
|
||||
dat+= "<span class='danger'>WARNING: Defib will cause extreme pain and set subject feral. Sedation recommended prior to defibrillation.</span>"
|
||||
else // If they bop them and they're not dead or reviving, give 'em a little notice.
|
||||
dat += "<span class='notice'>Subject is a Xenochimera. Treat accordingly.</span>"
|
||||
// VOREStation Edit End
|
||||
user.show_message(dat, 1)
|
||||
|
||||
/obj/item/device/healthanalyzer/verb/toggle_mode()
|
||||
set name = "Switch Verbosity"
|
||||
set category = "Object"
|
||||
|
||||
mode = !mode
|
||||
switch (mode)
|
||||
if(1)
|
||||
to_chat(usr, "The scanner now shows specific limb damage.")
|
||||
if(0)
|
||||
to_chat(usr, "The scanner no longer shows limb damage.")
|
||||
|
||||
/obj/item/device/healthanalyzer/proc/toggle_adv()
|
||||
set name = "Toggle Advanced Scan"
|
||||
set category = "Object"
|
||||
|
||||
showadvscan = !showadvscan
|
||||
switch (showadvscan)
|
||||
if(1)
|
||||
to_chat(usr, "The scanner will now perform an advanced analysis.")
|
||||
if(0)
|
||||
to_chat(usr, "The scanner will now perform a basic analysis.")
|
||||
|
||||
/obj/item/device/healthanalyzer/improved //reports bone fractures, IB, quantity of beneficial reagents in stomach; also regular health analyzer stuff
|
||||
name = "improved health analyzer"
|
||||
desc = "A miracle of medical technology, this handheld scanner can produce an accurate and specific report of a patient's biosigns."
|
||||
advscan = 1
|
||||
origin_tech = list(TECH_MAGNET = 5, TECH_BIO = 6)
|
||||
icon_state = "health1"
|
||||
|
||||
/obj/item/device/healthanalyzer/advanced //reports all of the above, as well as radiation severity and minor brain damage
|
||||
name = "advanced health analyzer"
|
||||
desc = "An even more advanced handheld health scanner, complete with a full biosign monitor and on-board radiation and neurological analysis suites."
|
||||
advscan = 2
|
||||
origin_tech = list(TECH_MAGNET = 6, TECH_BIO = 7)
|
||||
icon_state = "health2"
|
||||
|
||||
/obj/item/device/healthanalyzer/phasic //reports all of the above, as well as name and quantity of nonmed reagents in stomach
|
||||
name = "phasic health analyzer"
|
||||
desc = "Possibly the most advanced health analyzer to ever have existed, utilising bluespace technology to determine almost everything worth knowing about a patient."
|
||||
advscan = 3
|
||||
origin_tech = list(TECH_MAGNET = 7, TECH_BIO = 8)
|
||||
icon_state = "health3"
|
||||
|
||||
#define DEFIB_TIME_LIMIT (10 MINUTES) //VOREStation addition- past this many seconds, defib is useless.
|
||||
|
||||
/obj/item/device/healthanalyzer
|
||||
name = "health analyzer"
|
||||
desc = "A hand-held body scanner able to distinguish vital signs of the subject."
|
||||
icon_state = "health"
|
||||
item_state = "healthanalyzer"
|
||||
slot_flags = SLOT_BELT
|
||||
throwforce = 3
|
||||
w_class = ITEMSIZE_SMALL
|
||||
throw_speed = 5
|
||||
throw_range = 10
|
||||
matter = list(MAT_STEEL = 200)
|
||||
origin_tech = list(TECH_MAGNET = 1, TECH_BIO = 1)
|
||||
var/mode = 1;
|
||||
var/advscan = 0
|
||||
var/showadvscan = 1
|
||||
|
||||
/obj/item/device/healthanalyzer/New()
|
||||
if(advscan >= 1)
|
||||
verbs += /obj/item/device/healthanalyzer/proc/toggle_adv
|
||||
..()
|
||||
|
||||
/obj/item/device/healthanalyzer/do_surgery(mob/living/M, mob/living/user)
|
||||
if(user.a_intent != I_HELP) //in case it is ever used as a surgery tool
|
||||
return ..()
|
||||
scan_mob(M, user) //default surgery behaviour is just to scan as usual
|
||||
return 1
|
||||
|
||||
/obj/item/device/healthanalyzer/attack(mob/living/M, mob/living/user)
|
||||
scan_mob(M, user)
|
||||
|
||||
/obj/item/device/healthanalyzer/proc/scan_mob(mob/living/M, mob/living/user)
|
||||
var/dat = ""
|
||||
if ((CLUMSY in user.mutations) && prob(50))
|
||||
user.visible_message("<span class='warning'>\The [user] has analyzed the floor's vitals!</span>", "<span class='warning'>You try to analyze the floor's vitals!</span>")
|
||||
dat += "Analyzing Results for the floor:<br>"
|
||||
dat += "Overall Status: Healthy<br>"
|
||||
dat += "\tDamage Specifics: 0-0-0-0<br>"
|
||||
dat += "Key: Suffocation/Toxin/Burns/Brute<br>"
|
||||
dat += "Body Temperature: ???"
|
||||
user.show_message("<span class='notice'>[dat]</span>", 1)
|
||||
return
|
||||
if (!user.IsAdvancedToolUser())
|
||||
to_chat(user, "<span class='warning'>You don't have the dexterity to do this!</span>")
|
||||
return
|
||||
|
||||
flick("[icon_state]-scan", src) //makes it so that it plays the scan animation on a succesful scan
|
||||
user.visible_message("<span class='notice'>[user] has analyzed [M]'s vitals.</span>","<span class='notice'>You have analyzed [M]'s vitals.</span>")
|
||||
|
||||
if (!ishuman(M) || M.isSynthetic())
|
||||
//these sensors are designed for organic life
|
||||
dat += "<span class='notice'>Analyzing Results for ERROR:\n\tOverall Status: ERROR<br>"
|
||||
dat += "\tKey: <font color='cyan'>Suffocation</font>/<font color='green'>Toxin</font>/<font color='#FFA500'>Burns</font>/<font color='red'>Brute</font><br>"
|
||||
dat += "\tDamage Specifics: <font color='cyan'>?</font> - <font color='green'>?</font> - <font color='#FFA500'>?</font> - <font color='red'>?</font><br>"
|
||||
dat += "Body Temperature: [M.bodytemperature-T0C]°C ([M.bodytemperature*1.8-459.67]°F)</span><br>"
|
||||
dat += "<span class='warning'>Warning: Blood Level ERROR: --% --cl.</span> <span class='notice'>Type: ERROR</span><br>"
|
||||
dat += "<span class='notice'>Subject's pulse: <font color='red'>-- bpm.</font></span>"
|
||||
user.show_message(dat, 1)
|
||||
return
|
||||
|
||||
var/fake_oxy = max(rand(1,40), M.getOxyLoss(), (300 - (M.getToxLoss() + M.getFireLoss() + M.getBruteLoss())))
|
||||
var/OX = M.getOxyLoss() > 50 ? "<b>[M.getOxyLoss()]</b>" : M.getOxyLoss()
|
||||
var/TX = M.getToxLoss() > 50 ? "<b>[M.getToxLoss()]</b>" : M.getToxLoss()
|
||||
var/BU = M.getFireLoss() > 50 ? "<b>[M.getFireLoss()]</b>" : M.getFireLoss()
|
||||
var/BR = M.getBruteLoss() > 50 ? "<b>[M.getBruteLoss()]</b>" : M.getBruteLoss()
|
||||
if(M.status_flags & FAKEDEATH)
|
||||
OX = fake_oxy > 50 ? "<b>[fake_oxy]</b>" : fake_oxy
|
||||
dat += "<span class='notice'>Analyzing Results for [M]:</span><br>"
|
||||
dat += "<span class='notice'>Overall Status: dead</span><br>"
|
||||
else
|
||||
dat += "<span class='notice'>Analyzing Results for [M]:\n\t Overall Status: [M.stat > 1 ? "dead" : "[round((M.health/M.getMaxHealth())*100) ]% healthy"]<br>"
|
||||
dat += "\tKey: <font color='cyan'>Suffocation</font>/<font color='green'>Toxin</font>/<font color='#FFA500'>Burns</font>/<font color='red'>Brute</font><br>"
|
||||
dat += "\tDamage Specifics: <font color='cyan'>[OX]</font> - <font color='green'>[TX]</font> - <font color='#FFA500'>[BU]</font> - <font color='red'>[BR]</font><br>"
|
||||
dat += "Body Temperature: [M.bodytemperature-T0C]°C ([M.bodytemperature*1.8-459.67]°F)</span><br>"
|
||||
//VOREStation edit/addition starts
|
||||
if(M.timeofdeath && (M.stat == DEAD || (M.status_flags & FAKEDEATH)))
|
||||
dat += "<span class='notice'>Time of Death: [worldtime2stationtime(M.timeofdeath)]</span><br>"
|
||||
var/tdelta = round(world.time - M.timeofdeath)
|
||||
if(tdelta < (DEFIB_TIME_LIMIT * 10))
|
||||
dat += "<span class='notice'><b>Subject died [DisplayTimeText(tdelta)] ago - resuscitation may be possible!</b></span><br>"
|
||||
//VOREStation edit/addition ends
|
||||
if(istype(M, /mob/living/carbon/human) && mode == 1)
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/list/damaged = H.get_damaged_organs(1,1)
|
||||
dat += "<span class='notice'>Localized Damage, Brute/Burn:</span><br>"
|
||||
if(length(damaged)>0)
|
||||
for(var/obj/item/organ/external/org in damaged)
|
||||
if(org.robotic >= ORGAN_ROBOT)
|
||||
continue
|
||||
else
|
||||
dat += "<span class='notice'> [capitalize(org.name)]: [(org.brute_dam > 0) ? "<span class='warning'>[org.brute_dam]</span>" : 0]"
|
||||
dat += "[(org.status & ORGAN_BLEEDING)?"<span class='danger'>\[Bleeding\]</span>":""] - "
|
||||
dat += "[(org.burn_dam > 0) ? "<font color='#FFA500'>[org.burn_dam]</font>" : 0]</span><br>"
|
||||
else
|
||||
dat += "<span class='notice'> Limbs are OK.</span><br>"
|
||||
|
||||
OX = M.getOxyLoss() > 50 ? "<font color='cyan'><b>Severe oxygen deprivation detected</b></font>" : "Subject bloodstream oxygen level normal"
|
||||
TX = M.getToxLoss() > 50 ? "<font color='green'><b>Dangerous amount of toxins detected</b></font>" : "Subject bloodstream toxin level minimal"
|
||||
BU = M.getFireLoss() > 50 ? "<font color='#FFA500'><b>Severe burn damage detected</b></font>" : "Subject burn injury status O.K"
|
||||
BR = M.getBruteLoss() > 50 ? "<font color='red'><b>Severe anatomical damage detected</b></font>" : "Subject brute-force injury status O.K"
|
||||
if(M.status_flags & FAKEDEATH)
|
||||
OX = fake_oxy > 50 ? "<span class='warning'>Severe oxygen deprivation detected</span>" : "Subject bloodstream oxygen level normal"
|
||||
dat += "[OX] | [TX] | [BU] | [BR]<br>"
|
||||
if(M.radiation)
|
||||
if(advscan >= 2 && showadvscan == 1)
|
||||
var/severity = ""
|
||||
if(M.radiation >= 75)
|
||||
severity = "Critical"
|
||||
else if(M.radiation >= 50)
|
||||
severity = "Severe"
|
||||
else if(M.radiation >= 25)
|
||||
severity = "Moderate"
|
||||
else if(M.radiation >= 1)
|
||||
severity = "Low"
|
||||
dat += "<span class='warning'>[severity] levels of radiation detected. [(severity == "Critical") ? " Immediate treatment advised." : ""]</span><br>"
|
||||
else
|
||||
dat += "<span class='warning'>Radiation detected.</span><br>"
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/C = M
|
||||
if(C.reagents.total_volume)
|
||||
var/unknown = 0
|
||||
var/reagentdata[0]
|
||||
var/unknownreagents[0]
|
||||
for(var/datum/reagent/R as anything in C.reagents.reagent_list)
|
||||
if(R.scannable)
|
||||
reagentdata["[R.id]"] = "<span class='notice'>\t[round(C.reagents.get_reagent_amount(R.id), 1)]u [R.name][(R.overdose && R.volume > R.overdose) ? " - <span class='danger'>Overdose</span>" : ""]</span><br>"
|
||||
else
|
||||
unknown++
|
||||
unknownreagents["[R.id]"] = "<span class='notice'>\t[round(C.reagents.get_reagent_amount(R.id), 1)]u [R.name][(R.overdose && R.volume > R.overdose) ? " - <span class='danger'>Overdose</span>" : ""]</span><br>"
|
||||
if(reagentdata.len)
|
||||
dat += "<span class='notice'>Beneficial reagents detected in subject's blood:</span><br>"
|
||||
for(var/d in reagentdata)
|
||||
dat += reagentdata[d]
|
||||
if(unknown)
|
||||
if(advscan >= 3 && showadvscan == 1)
|
||||
dat += "<span class='warning'>Warning: Non-medical reagent[(unknown>1)?"s":""] detected in subject's blood:</span><br>"
|
||||
for(var/d in unknownreagents)
|
||||
dat += unknownreagents[d]
|
||||
else
|
||||
dat += "<span class='warning'>Warning: Unknown substance[(unknown>1)?"s":""] detected in subject's blood.</span><br>"
|
||||
if(C.ingested && C.ingested.total_volume)
|
||||
var/unknown = 0
|
||||
var/stomachreagentdata[0]
|
||||
var/stomachunknownreagents[0]
|
||||
for(var/datum/reagent/R as anything in C.ingested.reagent_list)
|
||||
if(R.scannable)
|
||||
stomachreagentdata["[R.id]"] = "<span class='notice'>\t[round(C.ingested.get_reagent_amount(R.id), 1)]u [R.name][(R.overdose && R.volume > R.overdose) ? " - <span class='danger'>Overdose</span>" : ""]</span><br>"
|
||||
if (advscan == 0 || showadvscan == 0)
|
||||
dat += "<span class='notice'>[R.name] found in subject's stomach.</span><br>"
|
||||
else
|
||||
++unknown
|
||||
stomachunknownreagents["[R.id]"] = "<span class='notice'>\t[round(C.ingested.get_reagent_amount(R.id), 1)]u [R.name][(R.overdose && R.volume > R.overdose) ? " - <span class='danger'>Overdose</span>" : ""]</span><br>"
|
||||
if(advscan >= 1 && showadvscan == 1)
|
||||
dat += "<span class='notice'>Beneficial reagents detected in subject's stomach:</span><br>"
|
||||
for(var/d in stomachreagentdata)
|
||||
dat += stomachreagentdata[d]
|
||||
if(unknown)
|
||||
if(advscan >= 3 && showadvscan == 1)
|
||||
dat += "<span class='warning'>Warning: Non-medical reagent[(unknown > 1)?"s":""] found in subject's stomach:</span><br>"
|
||||
for(var/d in stomachunknownreagents)
|
||||
dat += stomachunknownreagents[d]
|
||||
else
|
||||
dat += "<span class='warning'>Unknown substance[(unknown > 1)?"s":""] found in subject's stomach.</span><br>"
|
||||
if(C.touching && C.touching.total_volume)
|
||||
var/unknown = 0
|
||||
var/touchreagentdata[0]
|
||||
var/touchunknownreagents[0]
|
||||
for(var/datum/reagent/R as anything in C.touching.reagent_list)
|
||||
if(R.scannable)
|
||||
touchreagentdata["[R.id]"] = "<span class='notice'>\t[round(C.touching.get_reagent_amount(R.id), 1)]u [R.name][(R.overdose && R.can_overdose_touch && R.volume > R.overdose) ? " - <span class='danger'>Overdose</span>" : ""]</span><br>"
|
||||
if (advscan == 0 || showadvscan == 0)
|
||||
dat += "<span class='notice'>[R.name] found in subject's dermis.</span><br>"
|
||||
else
|
||||
++unknown
|
||||
touchunknownreagents["[R.id]"] = "<span class='notice'>\t[round(C.ingested.get_reagent_amount(R.id), 1)]u [R.name][(R.overdose && R.can_overdose_touch && R.volume > R.overdose) ? " - <span class='danger'>Overdose</span>" : ""]</span><br>"
|
||||
if(advscan >= 1 && showadvscan == 1)
|
||||
dat += "<span class='notice'>Beneficial reagents detected in subject's dermis:</span><br>"
|
||||
for(var/d in touchreagentdata)
|
||||
dat += touchreagentdata[d]
|
||||
if(unknown)
|
||||
if(advscan >= 3 && showadvscan == 1)
|
||||
dat += "<span class='warning'>Warning: Non-medical reagent[(unknown > 1)?"s":""] found in subject's dermis:</span><br>"
|
||||
for(var/d in touchunknownreagents)
|
||||
dat += touchunknownreagents[d]
|
||||
else
|
||||
dat += "<span class='warning'>Unknown substance[(unknown > 1)?"s":""] found in subject's dermis.</span><br>"
|
||||
if(C.virus2.len)
|
||||
for (var/ID in C.virus2)
|
||||
if (ID in virusDB)
|
||||
var/datum/data/record/V = virusDB[ID]
|
||||
dat += "<span class='warning'>Warning: Pathogen [V.fields["name"]] detected in subject's blood. Known antigen : [V.fields["antigen"]]</span><br>"
|
||||
else
|
||||
dat += "<span class='warning'>Warning: Unknown pathogen detected in subject's blood.</span><br>"
|
||||
if (M.getCloneLoss())
|
||||
dat += "<span class='warning'>Subject appears to have been imperfectly cloned.</span><br>"
|
||||
// if (M.reagents && M.reagents.get_reagent_amount("inaprovaline"))
|
||||
// user.show_message("<span class='notice'>Bloodstream Analysis located [M.reagents:get_reagent_amount("inaprovaline")] units of rejuvenation chemicals.</span>")
|
||||
if (M.has_brain_worms())
|
||||
dat += "<span class='warning'>Subject suffering from aberrant brain activity. Recommend further scanning.</span><br>"
|
||||
else if (M.getBrainLoss() >= 60 || !M.has_brain())
|
||||
dat += "<span class='warning'>Subject is brain dead.</span><br>"
|
||||
else if (M.getBrainLoss() >= 25)
|
||||
dat += "<span class='warning'>Severe brain damage detected. Subject likely to have a traumatic brain injury.</span><br>"
|
||||
else if (M.getBrainLoss() >= 10)
|
||||
dat += "<span class='warning'>Significant brain damage detected. Subject may have had a concussion.</span><br>"
|
||||
else if (M.getBrainLoss() >= 1 && advscan >= 2 && showadvscan == 1)
|
||||
dat += "<span class='warning'>Minor brain damage detected.</span><br>"
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
for(var/obj/item/organ/internal/appendix/a in H.internal_organs)
|
||||
var/severity = ""
|
||||
if(a.inflamed > 3)
|
||||
severity = "Severe"
|
||||
else if(a.inflamed > 2)
|
||||
severity = "Moderate"
|
||||
else if(a.inflamed >= 1)
|
||||
severity = "Mild"
|
||||
if(severity)
|
||||
dat += "<span class='warning'>[severity] inflammation detected in subject [a.name].</span><br>"
|
||||
// Infections, fractures, and IB
|
||||
var/basic_fracture = 0 // If it's a basic scanner
|
||||
var/basic_ib = 0 // If it's a basic scanner
|
||||
var/fracture_dat = "" // All the fractures
|
||||
var/infection_dat = "" // All the infections
|
||||
var/ib_dat = "" // All the IB
|
||||
for(var/obj/item/organ/external/e in H.organs)
|
||||
if(!e)
|
||||
continue
|
||||
// Broken limbs
|
||||
if(e.status & ORGAN_BROKEN)
|
||||
if((e.name in list(BP_L_ARM, BP_R_ARM, BP_L_LEG, BP_R_LEG, BP_HEAD, BP_TORSO, BP_GROIN)) && (!e.splinted))
|
||||
fracture_dat += "<span class='warning'>Unsecured fracture in subject [e.name]. Splinting recommended for transport.</span><br>"
|
||||
else if(advscan >= 1 && showadvscan == 1)
|
||||
fracture_dat += "<span class='warning'>Bone fractures detected in subject [e.name].</span><br>"
|
||||
else
|
||||
basic_fracture = 1
|
||||
// Infections
|
||||
if(e.has_infected_wound())
|
||||
dat += "<span class='warning'>Infected wound detected in subject [e.name]. Disinfection recommended.</span><br>"
|
||||
// IB
|
||||
for(var/datum/wound/W in e.wounds)
|
||||
if(W.internal)
|
||||
if(advscan >= 1 && showadvscan == 1)
|
||||
ib_dat += "<span class='warning'>Internal bleeding detected in subject [e.name].</span><br>"
|
||||
else
|
||||
basic_ib = 1
|
||||
if(basic_fracture)
|
||||
fracture_dat += "<span class='warning'>Bone fractures detected. Advanced scanner required for location.</span><br>"
|
||||
if(basic_ib)
|
||||
ib_dat += "<span class='warning'>Internal bleeding detected. Advanced scanner required for location.</span><br>"
|
||||
dat += fracture_dat
|
||||
dat += infection_dat
|
||||
dat += ib_dat
|
||||
|
||||
// Blood level
|
||||
if(M:vessel)
|
||||
var/blood_volume = H.vessel.get_reagent_amount("blood")
|
||||
var/blood_percent = round((blood_volume / H.species.blood_volume)*100)
|
||||
var/blood_type = H.dna.b_type
|
||||
if(blood_volume <= H.species.blood_volume*H.species.blood_level_danger)
|
||||
dat += "<span class='danger'><i>Warning: Blood Level CRITICAL: [blood_percent]% [blood_volume]cl. Type: [blood_type]</i></span><br>"
|
||||
else if(blood_volume <= H.species.blood_volume*H.species.blood_level_warning)
|
||||
dat += "<span class='danger'><i>Warning: Blood Level VERY LOW: [blood_percent]% [blood_volume]cl. Type: [blood_type]</i></span><br>"
|
||||
else if(blood_volume <= H.species.blood_volume*H.species.blood_level_safe)
|
||||
dat += "<span class='danger'>Warning: Blood Level LOW: [blood_percent]% [blood_volume]cl. Type: [blood_type]</span><br>"
|
||||
else
|
||||
dat += "<span class='notice'>Blood Level Normal: [blood_percent]% [blood_volume]cl. Type: [blood_type]</span><br>"
|
||||
dat += "<span class='notice'>Subject's pulse: <font color='[H.pulse == PULSE_THREADY || H.pulse == PULSE_NONE ? "red" : "blue"]'>[H.get_pulse(GETPULSE_TOOL)] bpm.</font></span><br>" // VORE Edit: Missed a linebreak here.
|
||||
if(istype(H.species, /datum/species/xenochimera)) // VOREStation Edit Start: Visible feedback for medmains on Xenochimera.
|
||||
if(H.stat == DEAD && H.revive_ready == REVIVING_READY && !H.hasnutriment())
|
||||
dat += "<span class='danger'>WARNING: Protein levels low. Subject incapable of reconstitution.</span>"
|
||||
else if(H.revive_ready == REVIVING_NOW)
|
||||
dat += "<span class='warning'>Subject is undergoing form reconstruction. Estimated time to finish is in: [round((H.revive_finished - world.time) / 10)] seconds.</span>"
|
||||
else if(H.revive_ready == REVIVING_DONE)
|
||||
dat += "<span class='notice'>Subject is ready to hatch. Transfer to dark room for holding with food available.</span>"
|
||||
else if(H.stat == DEAD)
|
||||
dat+= "<span class='danger'>WARNING: Defib will cause extreme pain and set subject feral. Sedation recommended prior to defibrillation.</span>"
|
||||
else // If they bop them and they're not dead or reviving, give 'em a little notice.
|
||||
dat += "<span class='notice'>Subject is a Xenochimera. Treat accordingly.</span>"
|
||||
// VOREStation Edit End
|
||||
user.show_message(dat, 1)
|
||||
|
||||
/obj/item/device/healthanalyzer/verb/toggle_mode()
|
||||
set name = "Switch Verbosity"
|
||||
set category = "Object"
|
||||
|
||||
mode = !mode
|
||||
switch (mode)
|
||||
if(1)
|
||||
to_chat(usr, "The scanner now shows specific limb damage.")
|
||||
if(0)
|
||||
to_chat(usr, "The scanner no longer shows limb damage.")
|
||||
|
||||
/obj/item/device/healthanalyzer/proc/toggle_adv()
|
||||
set name = "Toggle Advanced Scan"
|
||||
set category = "Object"
|
||||
|
||||
showadvscan = !showadvscan
|
||||
switch (showadvscan)
|
||||
if(1)
|
||||
to_chat(usr, "The scanner will now perform an advanced analysis.")
|
||||
if(0)
|
||||
to_chat(usr, "The scanner will now perform a basic analysis.")
|
||||
|
||||
/obj/item/device/healthanalyzer/improved //reports bone fractures, IB, quantity of beneficial reagents in stomach; also regular health analyzer stuff
|
||||
name = "improved health analyzer"
|
||||
desc = "A miracle of medical technology, this handheld scanner can produce an accurate and specific report of a patient's biosigns."
|
||||
advscan = 1
|
||||
origin_tech = list(TECH_MAGNET = 5, TECH_BIO = 6)
|
||||
icon_state = "health1"
|
||||
|
||||
/obj/item/device/healthanalyzer/advanced //reports all of the above, as well as radiation severity and minor brain damage
|
||||
name = "advanced health analyzer"
|
||||
desc = "An even more advanced handheld health scanner, complete with a full biosign monitor and on-board radiation and neurological analysis suites."
|
||||
advscan = 2
|
||||
origin_tech = list(TECH_MAGNET = 6, TECH_BIO = 7)
|
||||
icon_state = "health2"
|
||||
|
||||
/obj/item/device/healthanalyzer/phasic //reports all of the above, as well as name and quantity of nonmed reagents in stomach
|
||||
name = "phasic health analyzer"
|
||||
desc = "Possibly the most advanced health analyzer to ever have existed, utilising bluespace technology to determine almost everything worth knowing about a patient."
|
||||
advscan = 3
|
||||
origin_tech = list(TECH_MAGNET = 7, TECH_BIO = 8)
|
||||
icon_state = "health3"
|
||||
|
||||
#undef DEFIB_TIME_LIMIT //VOREStation addition
|
||||
@@ -17,8 +17,8 @@
|
||||
var/obj/machinery/camera/bug/camera
|
||||
var/camtype = /obj/machinery/camera/bug
|
||||
|
||||
/obj/item/device/camerabug/Initialize()
|
||||
. = ..()
|
||||
/obj/item/device/camerabug/New()
|
||||
..()
|
||||
// radio = new(src)
|
||||
camera = new camtype(src)
|
||||
|
||||
@@ -158,9 +158,8 @@
|
||||
var/obj/machinery/camera/bug/selected_camera
|
||||
var/list/obj/machinery/camera/bug/cameras = new()
|
||||
/*
|
||||
/obj/item/device/bug_monitor/Initialize()
|
||||
/obj/item/device/bug_monitor/New()
|
||||
radio = new(src)
|
||||
. = ..()
|
||||
*/
|
||||
/obj/item/device/bug_monitor/attack_self(mob/user)
|
||||
if(operating)
|
||||
@@ -243,8 +242,8 @@
|
||||
/obj/machinery/camera/bug
|
||||
network = list(NETWORK_SECURITY)
|
||||
|
||||
/obj/machinery/camera/bug/Initialize()
|
||||
. = ..()
|
||||
/obj/machinery/camera/bug/New()
|
||||
..()
|
||||
name = "Camera #[rand(1000,9999)]"
|
||||
c_tag = name
|
||||
|
||||
@@ -252,8 +251,8 @@
|
||||
// These cheap toys are accessible from the mercenary camera console as well - only the antag ones though!
|
||||
network = list(NETWORK_MERCENARY)
|
||||
|
||||
/obj/machinery/camera/bug/spy/Initialize()
|
||||
. = ..()
|
||||
/obj/machinery/camera/bug/spy/New()
|
||||
..()
|
||||
name = "DV-136ZB #[rand(1000,9999)]"
|
||||
c_tag = name
|
||||
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
throw_speed = 4
|
||||
throw_range = 20
|
||||
|
||||
/obj/item/device/taperecorder/Initialize()
|
||||
. = ..()
|
||||
/obj/item/device/taperecorder/New()
|
||||
..()
|
||||
if(ispath(mytape))
|
||||
mytape = new mytape(src)
|
||||
update_icon()
|
||||
@@ -431,6 +431,5 @@
|
||||
|
||||
|
||||
//Random colour tapes
|
||||
/obj/item/device/tape/random/Initialize()
|
||||
. = ..()
|
||||
/obj/item/device/tape/random/New()
|
||||
icon_state = "tape_[pick("white", "blue", "red", "yellow", "purple")]"
|
||||
@@ -11,6 +11,10 @@
|
||||
var/weakref/showing
|
||||
var/showing_name
|
||||
|
||||
/obj/item/device/tvcamera/New()
|
||||
..()
|
||||
listening_objects += src
|
||||
|
||||
/obj/item/device/tvcamera/Destroy()
|
||||
listening_objects -= src
|
||||
qdel(camera)
|
||||
@@ -26,7 +30,6 @@
|
||||
|
||||
/obj/item/device/tvcamera/Initialize()
|
||||
. = ..()
|
||||
listening_objects += src
|
||||
camera = new(src)
|
||||
camera.c_tag = channel
|
||||
camera.status = FALSE
|
||||
|
||||
@@ -212,8 +212,8 @@
|
||||
//
|
||||
// Includes normal radio uplink, multitool uplink,
|
||||
// implant uplink (not the implant tool) and a preset headset uplink.
|
||||
/obj/item/device/radio/uplink/Initialize()
|
||||
. = ..()
|
||||
/obj/item/device/radio/uplink/New()
|
||||
..()
|
||||
hidden_uplink = new(src)
|
||||
icon_state = "radio"
|
||||
|
||||
@@ -221,8 +221,8 @@
|
||||
if(hidden_uplink)
|
||||
hidden_uplink.trigger(user)
|
||||
|
||||
/obj/item/device/multitool/uplink/Initialize()
|
||||
. = ..()
|
||||
/obj/item/device/multitool/uplink/New()
|
||||
..()
|
||||
hidden_uplink = new(src)
|
||||
|
||||
/obj/item/device/multitool/uplink/attack_self(mob/user as mob)
|
||||
@@ -232,6 +232,6 @@
|
||||
/obj/item/device/radio/headset/uplink
|
||||
traitor_frequency = 1445
|
||||
|
||||
/obj/item/device/radio/headset/uplink/Initialize()
|
||||
. = ..()
|
||||
/obj/item/device/radio/headset/uplink/New()
|
||||
..()
|
||||
hidden_uplink = new(src)
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
//copy pasta of the space piano, don't hurt me -Pete
|
||||
/obj/item/device/instrument
|
||||
name = "generic instrument"
|
||||
var/datum/song/handheld/song
|
||||
var/instrumentId = "generic"
|
||||
var/instrumentExt = "mid"
|
||||
icon = 'icons/obj/musician.dmi'
|
||||
force = 10
|
||||
|
||||
/obj/item/device/instrument/Initialize()
|
||||
. = ..()
|
||||
song = new(instrumentId, src)
|
||||
song.instrumentExt = instrumentExt
|
||||
|
||||
/obj/item/device/instrument/Destroy()
|
||||
qdel(song)
|
||||
song = null
|
||||
..()
|
||||
|
||||
/obj/item/device/instrument/attack_self(mob/user as mob)
|
||||
if(!user.IsAdvancedToolUser())
|
||||
to_chat(user, "<span class='warning'>You don't have the dexterity to do this!</span>")
|
||||
return 1
|
||||
interact(user)
|
||||
|
||||
/obj/item/device/instrument/interact(mob/user as mob)
|
||||
if(!user)
|
||||
return
|
||||
|
||||
if(user.incapacitated() || user.lying)
|
||||
return
|
||||
|
||||
user.set_machine(src)
|
||||
song.interact(user)
|
||||
|
||||
/obj/item/device/instrument/violin
|
||||
name = "space violin"
|
||||
desc = "A wooden musical instrument with four strings and a bow. \"The devil went down to space, he was looking for an assistant to grief.\""
|
||||
icon_state = "violin"
|
||||
attack_verb = list("smashed")
|
||||
instrumentId = "violin"
|
||||
@@ -17,8 +17,8 @@
|
||||
drop_sound = 'sound/items/drop/glass.ogg'
|
||||
pickup_sound = 'sound/items/pickup/glass.ogg'
|
||||
|
||||
/obj/item/glass_jar/Initialize()
|
||||
. = ..()
|
||||
/obj/item/glass_jar/New()
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/glass_jar/afterattack(var/atom/A, var/mob/user, var/proximity)
|
||||
|
||||
@@ -198,7 +198,6 @@
|
||||
return ..()
|
||||
|
||||
/obj/item/device/kit/suit/rig/debug/Initialize()
|
||||
. = ..()
|
||||
set_info("debug suit", "This is a test", "debug", CUSTOM_ITEM_OBJ, CUSTOM_ITEM_MOB)
|
||||
|
||||
/obj/item/device/kit/paint
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
desc = "The top of this twisted chunk of metal is faintly stamped with a five pointed star. 'Property of US Army, Pascal B - 1957'."
|
||||
catalogue_data = list(/datum/category_item/catalogue/information/objects/pascalb)
|
||||
|
||||
/obj/item/poi/pascalb/Initialize()
|
||||
/obj/item/poi/pascalb/New()
|
||||
START_PROCESSING(SSobj, src)
|
||||
return ..()
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
desc = "This broken hunk of machinery looks extremely dangerous."
|
||||
catalogue_data = list(/datum/category_item/catalogue/information/objects/oldreactor)
|
||||
|
||||
/obj/item/poi/brokenoldreactor/Initialize()
|
||||
/obj/item/poi/brokenoldreactor/New()
|
||||
START_PROCESSING(SSobj, src)
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -67,8 +67,8 @@
|
||||
icon_state = "healthhud"
|
||||
icon = 'icons/inventory/eyes/item.dmi'
|
||||
|
||||
/obj/item/borg/sight/hud/med/Initialize()
|
||||
. = ..()
|
||||
/obj/item/borg/sight/hud/med/New()
|
||||
..()
|
||||
hud = new /obj/item/clothing/glasses/hud/health(src)
|
||||
return
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
icon_state = "securityhud"
|
||||
icon = 'icons/inventory/eyes/item.dmi'
|
||||
|
||||
/obj/item/borg/sight/hud/sec/Initialize()
|
||||
. = ..()
|
||||
/obj/item/borg/sight/hud/sec/New()
|
||||
..()
|
||||
hud = new /obj/item/clothing/glasses/hud/security(src)
|
||||
return
|
||||
|
||||
@@ -12,6 +12,9 @@
|
||||
/obj/item/robot_parts/set_dir()
|
||||
return
|
||||
|
||||
/obj/item/robot_parts/New(var/newloc, var/model)
|
||||
..(newloc)
|
||||
|
||||
/obj/item/robot_parts/l_arm
|
||||
name = "cyborg left arm"
|
||||
desc = "A skeletal limb wrapped in pseudomuscles, with a low-conductivity case."
|
||||
@@ -68,8 +71,8 @@
|
||||
var/obj/item/robot_parts/head/head = null
|
||||
var/created_name = ""
|
||||
|
||||
/obj/item/robot_parts/robot_suit/Initialize()
|
||||
. = ..()
|
||||
/obj/item/robot_parts/robot_suit/New()
|
||||
..()
|
||||
src.updateicon()
|
||||
|
||||
/obj/item/robot_parts/robot_suit/proc/updateicon()
|
||||
@@ -189,7 +192,7 @@
|
||||
to_chat(user, "<span class='warning'>This [W] does not seem to fit.</span>")
|
||||
return
|
||||
|
||||
var/mob/living/silicon/robot/O = new /mob/living/silicon/robot(get_turf(loc), TRUE)
|
||||
var/mob/living/silicon/robot/O = new /mob/living/silicon/robot(get_turf(loc), unfinished = 1)
|
||||
if(!O) return
|
||||
|
||||
user.drop_item()
|
||||
|
||||
@@ -89,7 +89,7 @@ var/list/marker_beacon_colors = list(
|
||||
var/perma = FALSE
|
||||
var/mapped_in_color
|
||||
|
||||
/obj/structure/marker_beacon/Initialize(var/ml, set_color)
|
||||
/obj/structure/marker_beacon/New(newloc, set_color)
|
||||
. = ..()
|
||||
if(set_color)
|
||||
picked_color = set_color
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
center_of_mass = null
|
||||
var/list/datum/stack_recipe/recipes
|
||||
var/singular_name
|
||||
var/amount = 1
|
||||
VAR_PROTECTED/amount = 1
|
||||
var/max_amount //also see stack recipes initialisation, param "max_res_amount" must be equal to this max_amount
|
||||
var/stacktype //determines whether different stack types can merge
|
||||
var/build_type = null //used when directly applied to a turf
|
||||
|
||||
@@ -36,8 +36,7 @@
|
||||
icon_state = "waterballoon-e"
|
||||
drop_sound = 'sound/items/drop/rubber.ogg'
|
||||
|
||||
/obj/item/toy/balloon/Initialize()
|
||||
. = ..()
|
||||
/obj/item/toy/balloon/New()
|
||||
var/datum/reagents/R = new/datum/reagents(10)
|
||||
reagents = R
|
||||
R.my_atom = src
|
||||
@@ -301,8 +300,8 @@
|
||||
var/toysay = "What the fuck did you do?"
|
||||
drop_sound = 'sound/items/drop/accessory.ogg'
|
||||
|
||||
/obj/item/toy/figure/Initialize()
|
||||
. = ..()
|
||||
/obj/item/toy/figure/New()
|
||||
..()
|
||||
desc = "A \"Space Life\" brand [name]"
|
||||
|
||||
/obj/item/toy/figure/attack_self(mob/user as mob)
|
||||
|
||||
@@ -11,12 +11,15 @@
|
||||
matter = list(MAT_STEEL = 30)
|
||||
var/age = 0
|
||||
|
||||
/obj/item/trash/Initialize(var/ml, var/_age)
|
||||
. = ..()
|
||||
/obj/item/trash/New(var/newloc, var/_age)
|
||||
..(newloc)
|
||||
if(!isnull(_age))
|
||||
age = _age
|
||||
if(!ml || !config.persistence_ignore_mapload)
|
||||
|
||||
/obj/item/trash/Initialize(mapload)
|
||||
if(!mapload || !config.persistence_ignore_mapload)
|
||||
SSpersistence.track_value(src, /datum/persistent/filth/trash)
|
||||
. = ..()
|
||||
|
||||
/obj/item/trash/Destroy()
|
||||
SSpersistence.forget_value(src, /datum/persistent/filth/trash)
|
||||
|
||||
@@ -10,9 +10,9 @@
|
||||
var/wax = 2000
|
||||
var/icon_type = "candle"
|
||||
|
||||
/obj/item/weapon/flame/candle/Initialize()
|
||||
/obj/item/weapon/flame/candle/New()
|
||||
wax -= rand(800, 1000) // Enough for 27-33 minutes. 30 minutes on average.
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/flame/candle/update_icon()
|
||||
var/i
|
||||
|
||||
@@ -412,8 +412,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
ignitermes = "<span class='notice'>USER fiddles with FLAME, and manages to light their NAME with the power of science.</span>"
|
||||
is_pipe = 1
|
||||
|
||||
/obj/item/clothing/mask/smokable/pipe/Initialize()
|
||||
. = ..()
|
||||
/obj/item/clothing/mask/smokable/pipe/New()
|
||||
..()
|
||||
name = "empty [initial(name)]"
|
||||
|
||||
/obj/item/clothing/mask/smokable/pipe/attack_self(mob/user as mob)
|
||||
@@ -582,8 +582,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
activation_sound = 'sound/items/zippo_on.ogg'
|
||||
deactivation_sound = 'sound/items/zippo_off.ogg'
|
||||
|
||||
/obj/item/weapon/flame/lighter/random/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/flame/lighter/random
|
||||
/obj/item/weapon/flame/lighter/random/New()
|
||||
icon_state = "lighter-[pick("r","c","y","g")]"
|
||||
item_state = icon_state
|
||||
base_state = icon_state
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
var/locked = 1
|
||||
var/emagged = 0
|
||||
|
||||
/obj/item/weapon/circuitboard/security/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/circuitboard/security/New()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/circuitboard/security/tv
|
||||
name = T_BOARD("security camera monitor - television")
|
||||
@@ -22,8 +22,8 @@
|
||||
build_path = /obj/machinery/computer/security/engineering
|
||||
req_access = list()
|
||||
|
||||
/obj/item/weapon/circuitboard/security/engineering/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/circuitboard/security/engineering/New()
|
||||
..()
|
||||
network = engineering_networks
|
||||
|
||||
/obj/item/weapon/circuitboard/security/mining
|
||||
@@ -38,8 +38,8 @@
|
||||
board_type = new /datum/frame/frame_types/display
|
||||
matter = list(MAT_STEEL = 50, MAT_GLASS = 50)
|
||||
|
||||
/obj/item/weapon/circuitboard/security/telescreen/entertainment/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/circuitboard/security/telescreen/entertainment/New()
|
||||
..()
|
||||
network = NETWORK_THUNDER
|
||||
|
||||
/obj/item/weapon/circuitboard/security/construct(var/obj/machinery/computer/security/C)
|
||||
|
||||
@@ -26,8 +26,7 @@
|
||||
/obj/item/weapon/lipstick/random
|
||||
name = "lipstick"
|
||||
|
||||
/obj/item/weapon/lipstick/random/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/lipstick/random/New()
|
||||
colour = pick("red","purple","jade","black")
|
||||
name = "[colour] lipstick"
|
||||
|
||||
|
||||
@@ -19,8 +19,7 @@
|
||||
var/datatype=0
|
||||
var/value=0
|
||||
|
||||
/obj/item/weapon/dnainjector/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/dnainjector/New()
|
||||
if(datatype && block)
|
||||
buf=new
|
||||
buf.dna=new
|
||||
@@ -143,9 +142,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
|
||||
/obj/item/weapon/dnainjector/hulkmut/Initialize()
|
||||
/obj/item/weapon/dnainjector/hulkmut/New()
|
||||
block = HULKBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antihulk
|
||||
name = "\improper DNA injector (Anti-Hulk)"
|
||||
@@ -153,9 +152,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
|
||||
/obj/item/weapon/dnainjector/antihulk/Initialize()
|
||||
/obj/item/weapon/dnainjector/antihulk/New()
|
||||
block = HULKBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/xraymut
|
||||
name = "\improper DNA injector (Xray)"
|
||||
@@ -163,9 +162,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
|
||||
/obj/item/weapon/dnainjector/xraymut/Initialize()
|
||||
/obj/item/weapon/dnainjector/xraymut/New()
|
||||
block = XRAYBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antixray
|
||||
name = "\improper DNA injector (Anti-Xray)"
|
||||
@@ -173,9 +172,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
|
||||
/obj/item/weapon/dnainjector/antixray/Initialize()
|
||||
/obj/item/weapon/dnainjector/antixray/New()
|
||||
block = XRAYBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/firemut
|
||||
name = "\improper DNA injector (Fire)"
|
||||
@@ -183,9 +182,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
|
||||
/obj/item/weapon/dnainjector/firemut/Initialize()
|
||||
/obj/item/weapon/dnainjector/firemut/New()
|
||||
block = FIREBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antifire
|
||||
name = "\improper DNA injector (Anti-Fire)"
|
||||
@@ -193,9 +192,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
|
||||
/obj/item/weapon/dnainjector/antifire/Initialize()
|
||||
/obj/item/weapon/dnainjector/antifire/New()
|
||||
block = FIREBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/telemut
|
||||
name = "\improper DNA injector (Tele.)"
|
||||
@@ -203,9 +202,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
|
||||
/obj/item/weapon/dnainjector/telemut/Initialize()
|
||||
/obj/item/weapon/dnainjector/telemut/New()
|
||||
block = TELEBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antitele
|
||||
name = "\improper DNA injector (Anti-Tele.)"
|
||||
@@ -213,9 +212,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
|
||||
/obj/item/weapon/dnainjector/antitele/Initialize()
|
||||
/obj/item/weapon/dnainjector/antitele/New()
|
||||
block = TELEBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/nobreath
|
||||
name = "\improper DNA injector (No Breath)"
|
||||
@@ -223,9 +222,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
|
||||
/obj/item/weapon/dnainjector/nobreath/Initialize()
|
||||
/obj/item/weapon/dnainjector/nobreath/New()
|
||||
block = NOBREATHBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antinobreath
|
||||
name = "\improper DNA injector (Anti-No Breath)"
|
||||
@@ -233,9 +232,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
|
||||
/obj/item/weapon/dnainjector/antinobreath/Initialize()
|
||||
/obj/item/weapon/dnainjector/antinobreath/New()
|
||||
block = NOBREATHBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/remoteview
|
||||
name = "\improper DNA injector (Remote View)"
|
||||
@@ -243,9 +242,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
|
||||
/obj/item/weapon/dnainjector/remoteview/Initialize()
|
||||
/obj/item/weapon/dnainjector/remoteview/New()
|
||||
block = REMOTEVIEWBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antiremoteview
|
||||
name = "\improper DNA injector (Anti-Remote View)"
|
||||
@@ -253,9 +252,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
|
||||
/obj/item/weapon/dnainjector/antiremoteview/Initialize()
|
||||
/obj/item/weapon/dnainjector/antiremoteview/New()
|
||||
block = REMOTEVIEWBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/regenerate
|
||||
name = "\improper DNA injector (Regeneration)"
|
||||
@@ -263,9 +262,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
|
||||
/obj/item/weapon/dnainjector/regenerate/Initialize()
|
||||
/obj/item/weapon/dnainjector/regenerate/New()
|
||||
block = REGENERATEBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antiregenerate
|
||||
name = "\improper DNA injector (Anti-Regeneration)"
|
||||
@@ -273,9 +272,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
|
||||
/obj/item/weapon/dnainjector/antiregenerate/Initialize()
|
||||
/obj/item/weapon/dnainjector/antiregenerate/New()
|
||||
block = REGENERATEBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/runfast
|
||||
name = "\improper DNA injector (Increase Run)"
|
||||
@@ -283,9 +282,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
|
||||
/obj/item/weapon/dnainjector/runfast/Initialize()
|
||||
/obj/item/weapon/dnainjector/runfast/New()
|
||||
block = INCREASERUNBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antirunfast
|
||||
name = "\improper DNA injector (Anti-Increase Run)"
|
||||
@@ -293,9 +292,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
|
||||
/obj/item/weapon/dnainjector/antirunfast/Initialize()
|
||||
/obj/item/weapon/dnainjector/antirunfast/New()
|
||||
block = INCREASERUNBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/morph
|
||||
name = "\improper DNA injector (Morph)"
|
||||
@@ -303,9 +302,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
|
||||
/obj/item/weapon/dnainjector/morph/Initialize()
|
||||
/obj/item/weapon/dnainjector/morph/New()
|
||||
block = MORPHBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antimorph
|
||||
name = "\improper DNA injector (Anti-Morph)"
|
||||
@@ -313,9 +312,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
|
||||
/obj/item/weapon/dnainjector/antimorph/Initialize()
|
||||
/obj/item/weapon/dnainjector/antimorph/New()
|
||||
block = MORPHBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/noprints
|
||||
name = "\improper DNA injector (No Prints)"
|
||||
@@ -323,9 +322,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
|
||||
/obj/item/weapon/dnainjector/noprints/Initialize()
|
||||
/obj/item/weapon/dnainjector/noprints/New()
|
||||
block = NOPRINTSBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antinoprints
|
||||
name = "\improper DNA injector (Anti-No Prints)"
|
||||
@@ -333,9 +332,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
|
||||
/obj/item/weapon/dnainjector/antinoprints/Initialize()
|
||||
/obj/item/weapon/dnainjector/antinoprints/New()
|
||||
block = NOPRINTSBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/insulation
|
||||
name = "\improper DNA injector (Shock Immunity)"
|
||||
@@ -343,9 +342,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
|
||||
/obj/item/weapon/dnainjector/insulation/Initialize()
|
||||
/obj/item/weapon/dnainjector/insulation/New()
|
||||
block = SHOCKIMMUNITYBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antiinsulation
|
||||
name = "\improper DNA injector (Anti-Shock Immunity)"
|
||||
@@ -353,9 +352,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
|
||||
/obj/item/weapon/dnainjector/antiinsulation/Initialize()
|
||||
/obj/item/weapon/dnainjector/antiinsulation/New()
|
||||
block = SHOCKIMMUNITYBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/midgit
|
||||
name = "\improper DNA injector (Small Size)"
|
||||
@@ -363,9 +362,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
|
||||
/obj/item/weapon/dnainjector/midgit/Initialize()
|
||||
/obj/item/weapon/dnainjector/midgit/New()
|
||||
block = SMALLSIZEBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antimidgit
|
||||
name = "\improper DNA injector (Anti-Small Size)"
|
||||
@@ -373,9 +372,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
|
||||
/obj/item/weapon/dnainjector/antimidgit/Initialize()
|
||||
/obj/item/weapon/dnainjector/antimidgit/New()
|
||||
block = SMALLSIZEBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/////////////////////////////////////
|
||||
/obj/item/weapon/dnainjector/antiglasses
|
||||
@@ -384,9 +383,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
|
||||
/obj/item/weapon/dnainjector/antiglasses/Initialize()
|
||||
/obj/item/weapon/dnainjector/antiglasses/New()
|
||||
block = GLASSESBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/glassesmut
|
||||
name = "\improper DNA injector (Glasses)"
|
||||
@@ -394,9 +393,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
|
||||
/obj/item/weapon/dnainjector/glassesmut/Initialize()
|
||||
/obj/item/weapon/dnainjector/glassesmut/New()
|
||||
block = GLASSESBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/epimut
|
||||
name = "\improper DNA injector (Epi.)"
|
||||
@@ -404,9 +403,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
|
||||
/obj/item/weapon/dnainjector/epimut/Initialize()
|
||||
/obj/item/weapon/dnainjector/epimut/New()
|
||||
block = HEADACHEBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antiepi
|
||||
name = "\improper DNA injector (Anti-Epi.)"
|
||||
@@ -414,9 +413,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
|
||||
/obj/item/weapon/dnainjector/antiepi/Initialize()
|
||||
/obj/item/weapon/dnainjector/antiepi/New()
|
||||
block = HEADACHEBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/anticough
|
||||
name = "\improper DNA injector (Anti-Cough)"
|
||||
@@ -424,9 +423,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
|
||||
/obj/item/weapon/dnainjector/anticough/Initialize()
|
||||
/obj/item/weapon/dnainjector/anticough/New()
|
||||
block = COUGHBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/coughmut
|
||||
name = "\improper DNA injector (Cough)"
|
||||
@@ -434,9 +433,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
|
||||
/obj/item/weapon/dnainjector/coughmut/Initialize()
|
||||
/obj/item/weapon/dnainjector/coughmut/New()
|
||||
block = COUGHBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/clumsymut
|
||||
name = "\improper DNA injector (Clumsy)"
|
||||
@@ -444,9 +443,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
|
||||
/obj/item/weapon/dnainjector/clumsymut/Initialize()
|
||||
/obj/item/weapon/dnainjector/clumsymut/New()
|
||||
block = CLUMSYBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/anticlumsy
|
||||
name = "\improper DNA injector (Anti-Clumy)"
|
||||
@@ -454,9 +453,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
|
||||
/obj/item/weapon/dnainjector/anticlumsy/Initialize()
|
||||
/obj/item/weapon/dnainjector/anticlumsy/New()
|
||||
block = CLUMSYBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antitour
|
||||
name = "\improper DNA injector (Anti-Tour.)"
|
||||
@@ -464,9 +463,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
|
||||
/obj/item/weapon/dnainjector/antitour/Initialize()
|
||||
/obj/item/weapon/dnainjector/antitour/New()
|
||||
block = TWITCHBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/tourmut
|
||||
name = "\improper DNA injector (Tour.)"
|
||||
@@ -474,9 +473,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
|
||||
/obj/item/weapon/dnainjector/tourmut/Initialize()
|
||||
/obj/item/weapon/dnainjector/tourmut/New()
|
||||
block = TWITCHBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/stuttmut
|
||||
name = "\improper DNA injector (Stutt.)"
|
||||
@@ -484,9 +483,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
|
||||
/obj/item/weapon/dnainjector/stuttmut/Initialize()
|
||||
/obj/item/weapon/dnainjector/stuttmut/New()
|
||||
block = NERVOUSBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antistutt
|
||||
name = "\improper DNA injector (Anti-Stutt.)"
|
||||
@@ -494,9 +493,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
|
||||
/obj/item/weapon/dnainjector/antistutt/Initialize()
|
||||
/obj/item/weapon/dnainjector/antistutt/New()
|
||||
block = NERVOUSBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/blindmut
|
||||
name = "\improper DNA injector (Blind)"
|
||||
@@ -504,9 +503,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
|
||||
/obj/item/weapon/dnainjector/blindmut/Initialize()
|
||||
/obj/item/weapon/dnainjector/blindmut/New()
|
||||
block = BLINDBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antiblind
|
||||
name = "\improper DNA injector (Anti-Blind)"
|
||||
@@ -514,9 +513,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
|
||||
/obj/item/weapon/dnainjector/antiblind/Initialize()
|
||||
/obj/item/weapon/dnainjector/antiblind/New()
|
||||
block = BLINDBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/deafmut
|
||||
name = "\improper DNA injector (Deaf)"
|
||||
@@ -524,9 +523,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
|
||||
/obj/item/weapon/dnainjector/deafmut/Initialize()
|
||||
/obj/item/weapon/dnainjector/deafmut/New()
|
||||
block = DEAFBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antideaf
|
||||
name = "\improper DNA injector (Anti-Deaf)"
|
||||
@@ -534,9 +533,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
|
||||
/obj/item/weapon/dnainjector/antideaf/Initialize()
|
||||
/obj/item/weapon/dnainjector/antideaf/New()
|
||||
block = DEAFBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/hallucination
|
||||
name = "\improper DNA injector (Halluctination)"
|
||||
@@ -544,9 +543,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
|
||||
/obj/item/weapon/dnainjector/hallucination/Initialize()
|
||||
/obj/item/weapon/dnainjector/hallucination/New()
|
||||
block = HALLUCINATIONBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antihallucination
|
||||
name = "\improper DNA injector (Anti-Hallucination)"
|
||||
@@ -554,9 +553,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
|
||||
/obj/item/weapon/dnainjector/antihallucination/Initialize()
|
||||
/obj/item/weapon/dnainjector/antihallucination/New()
|
||||
block = HALLUCINATIONBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/h2m
|
||||
name = "\improper DNA injector (Human > Monkey)"
|
||||
@@ -564,9 +563,9 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
|
||||
/obj/item/weapon/dnainjector/h2m/Initialize()
|
||||
/obj/item/weapon/dnainjector/h2m/New()
|
||||
block = MONKEYBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/m2h
|
||||
name = "\improper DNA injector (Monkey > Human)"
|
||||
@@ -574,6 +573,6 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
|
||||
/obj/item/weapon/dnainjector/m2h/Initialize()
|
||||
/obj/item/weapon/dnainjector/m2h/New()
|
||||
block = MONKEYBLOCK
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
var/icon_empty
|
||||
var/ecig_colors = list(null, COLOR_DARK_GRAY, COLOR_RED_GRAY, COLOR_BLUE_GRAY, COLOR_GREEN_GRAY, COLOR_PURPLE_GRAY)
|
||||
|
||||
/obj/item/clothing/mask/smokable/ecig/Initialize()
|
||||
. = ..()
|
||||
/obj/item/clothing/mask/smokable/ecig/New()
|
||||
..()
|
||||
ec_cartridge = new cartridge_type(src)
|
||||
|
||||
/obj/item/clothing/mask/smokable/ecig/examine(mob/user)
|
||||
@@ -61,8 +61,8 @@
|
||||
icon_off = "ecigoff1"
|
||||
icon_empty = "ecigoff1"
|
||||
icon_on = "ecigon"
|
||||
/obj/item/clothing/mask/smokable/ecig/util/Initialize()
|
||||
. = ..()
|
||||
/obj/item/clothing/mask/smokable/ecig/util/New()
|
||||
..()
|
||||
color = pick(ecig_colors)
|
||||
|
||||
/obj/item/clothing/mask/smokable/ecig/deluxe
|
||||
@@ -153,8 +153,7 @@
|
||||
volume = 20
|
||||
flags = OPENCONTAINER
|
||||
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/New()
|
||||
create_reagents(volume)
|
||||
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/examine(mob/user as mob)//to see how much left
|
||||
@@ -169,32 +168,32 @@
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/blanknico
|
||||
name = "flavorless nicotine cartridge"
|
||||
desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label says you can add whatever flavoring agents you want."
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/blanknico/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/blanknico/New()
|
||||
..()
|
||||
reagents.add_reagent("nicotine", 5)
|
||||
reagents.add_reagent("water", 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/med_nicotine
|
||||
name = "tobacco flavour cartridge"
|
||||
desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label says its tobacco flavored."
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/med_nicotine/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/med_nicotine/New()
|
||||
..()
|
||||
reagents.add_reagent("nicotine", 5)
|
||||
reagents.add_reagent("water", 15)
|
||||
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/high_nicotine
|
||||
name = "high nicotine tobacco flavour cartridge"
|
||||
desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label says its tobacco flavored, with extra nicotine."
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/high_nicotine/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/high_nicotine/New()
|
||||
..()
|
||||
reagents.add_reagent("nicotine", 10)
|
||||
reagents.add_reagent("water", 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/orange
|
||||
name = "orange flavour cartridge"
|
||||
desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label says its orange flavored."
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/orange/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/orange/New()
|
||||
..()
|
||||
reagents.add_reagent("nicotine", 5)
|
||||
reagents.add_reagent("water", 10)
|
||||
reagents.add_reagent("orangejuice", 5)
|
||||
@@ -202,8 +201,8 @@
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/mint
|
||||
name = "mint flavour cartridge"
|
||||
desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label says its mint flavored."
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/mint/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/mint/New()
|
||||
..()
|
||||
reagents.add_reagent("nicotine", 5)
|
||||
reagents.add_reagent("water", 10)
|
||||
reagents.add_reagent("menthol", 5)
|
||||
@@ -211,8 +210,8 @@
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/watermelon
|
||||
name = "watermelon flavour cartridge"
|
||||
desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label says its watermelon flavored."
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/watermelon/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/watermelon/New()
|
||||
..()
|
||||
reagents.add_reagent("nicotine", 5)
|
||||
reagents.add_reagent("water", 10)
|
||||
reagents.add_reagent("watermelonjuice", 5)
|
||||
@@ -220,8 +219,8 @@
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/grape
|
||||
name = "grape flavour cartridge"
|
||||
desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label says its grape flavored."
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/grape/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/grape/New()
|
||||
..()
|
||||
reagents.add_reagent("nicotine", 5)
|
||||
reagents.add_reagent("water", 10)
|
||||
reagents.add_reagent("grapejuice", 5)
|
||||
@@ -229,8 +228,8 @@
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/lemonlime
|
||||
name = "lemon-lime flavour cartridge"
|
||||
desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label says its lemon-lime flavored."
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/lemonlime/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/lemonlime/New()
|
||||
..()
|
||||
reagents.add_reagent("nicotine", 5)
|
||||
reagents.add_reagent("water", 10)
|
||||
reagents.add_reagent("lemon_lime", 5)
|
||||
@@ -238,8 +237,8 @@
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/coffee
|
||||
name = "coffee flavour cartridge"
|
||||
desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label says its coffee flavored."
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/coffee/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/coffee/New()
|
||||
..()
|
||||
reagents.add_reagent("nicotine", 5)
|
||||
reagents.add_reagent("water", 10)
|
||||
reagents.add_reagent("coffee", 5)
|
||||
@@ -247,8 +246,8 @@
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/cannabis
|
||||
name = "herb flavour cartridge"
|
||||
desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label seems to be suspiciously scuffed off..."
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/cannabis/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/reagent_containers/ecig_cartridge/cannabis/New()
|
||||
..()
|
||||
reagents.add_reagent("nicotine", 5)
|
||||
reagents.add_reagent("water", 10)
|
||||
reagents.add_reagent("cannabis", 5)
|
||||
|
||||
@@ -18,10 +18,10 @@
|
||||
var/blast_light = 2
|
||||
var/blast_flash = 3
|
||||
|
||||
/obj/item/weapon/plastique/Initialize()
|
||||
/obj/item/weapon/plastique/New()
|
||||
wires = new(src)
|
||||
image_overlay = image('icons/obj/assemblies.dmi', "plastic-explosive2")
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/plastique/Destroy()
|
||||
qdel(wires)
|
||||
|
||||
@@ -193,11 +193,12 @@
|
||||
//location.hotspot_expose(1000,500,1)
|
||||
return
|
||||
|
||||
/obj/item/weapon/flamethrower/full/Initialize(var/ml)
|
||||
. = ..(ml)
|
||||
/obj/item/weapon/flamethrower/full/New(var/loc)
|
||||
..()
|
||||
weldtool = new /obj/item/weapon/weldingtool(src)
|
||||
weldtool.status = 0
|
||||
igniter = new /obj/item/device/assembly/igniter(src)
|
||||
igniter.secured = 0
|
||||
status = 1
|
||||
update_icon()
|
||||
return
|
||||
|
||||
@@ -3,10 +3,9 @@ CONTAINS:
|
||||
THAT STUPID GAME KIT
|
||||
|
||||
*/
|
||||
/obj/item/weapon/game_kit/Initialize()
|
||||
/obj/item/weapon/game_kit/New()
|
||||
src.board_stat = "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
|
||||
src.selected = "CR"
|
||||
. = ..()
|
||||
|
||||
/obj/item/weapon/game_kit/attack_paw(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
drop_sound = 'sound/items/drop/cardboardbox.ogg'
|
||||
pickup_sound = 'sound/items/pickup/cardboardbox.ogg'
|
||||
|
||||
/obj/item/weapon/a_gift/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/a_gift/New()
|
||||
..()
|
||||
pixel_x = rand(-10,10)
|
||||
pixel_y = rand(-10,10)
|
||||
if(w_class > 0 && w_class < ITEMSIZE_LARGE)
|
||||
|
||||
@@ -22,8 +22,8 @@
|
||||
damage *= B.overmind.blob_type.burn_multiplier
|
||||
B.adjust_integrity(-damage)
|
||||
|
||||
new /obj/effect/effect/sparks(src.loc)
|
||||
new /obj/effect/effect/smoke/illumination(src.loc, 5, 30, 30, "#FFFFFF")
|
||||
new/obj/effect/effect/sparks(src.loc)
|
||||
new/obj/effect/effect/smoke/illumination(src.loc, 5, range=30, power=30, color="#FFFFFF")
|
||||
|
||||
qdel(src)
|
||||
|
||||
@@ -135,21 +135,31 @@
|
||||
can_repeat = FALSE
|
||||
banglet = TRUE
|
||||
|
||||
/obj/item/weapon/grenade/flashbang/clusterbang/segment/Initialize() //Segments should never exist except part of the clusterbang, since these immediately 'do their thing' and asplode
|
||||
. = ..()
|
||||
/obj/item/weapon/grenade/flashbang/clusterbang/segment/New()//Segments should never exist except part of the clusterbang, since these immediately 'do their thing' and asplode
|
||||
..()
|
||||
|
||||
icon_state = "clusterbang_segment_active"
|
||||
|
||||
var/stepdist = rand(1,4)//How far to step
|
||||
var/temploc = src.loc//Saves the current location to know where to step away from
|
||||
walk_away(src,temploc,stepdist)//I must go, my people need me
|
||||
addtimer(CALLBACK(src, .proc/detonate), rand(15, 60))
|
||||
|
||||
var/dettime = rand(15,60)
|
||||
spawn(dettime)
|
||||
detonate()
|
||||
|
||||
/obj/item/weapon/grenade/flashbang/cluster
|
||||
banglet = TRUE
|
||||
|
||||
/obj/item/weapon/grenade/flashbang/cluster/Initialize() //Same concept as the segments, so that all of the parts don't become reliant on the clusterbang
|
||||
. = ..()
|
||||
/obj/item/weapon/grenade/flashbang/cluster/New()//Same concept as the segments, so that all of the parts don't become reliant on the clusterbang
|
||||
..()
|
||||
|
||||
icon_state = "flashbang_active"
|
||||
|
||||
var/stepdist = rand(1,3)
|
||||
var/temploc = src.loc
|
||||
walk_away(src,temploc,stepdist)
|
||||
addtimer(CALLBACK(src, .proc/detonate), rand(15, 60))
|
||||
|
||||
var/dettime = rand(15,60)
|
||||
spawn(dettime)
|
||||
detonate()
|
||||
@@ -11,8 +11,8 @@
|
||||
var/smoke_color
|
||||
var/smoke_strength = 8
|
||||
|
||||
/obj/item/weapon/grenade/smokebomb/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/grenade/smokebomb/New()
|
||||
..()
|
||||
src.smoke = new /datum/effect/effect/system/smoke_spread/bad()
|
||||
src.smoke.attach(src)
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
drop_sound = 'sound/items/drop/card.ogg'
|
||||
pickup_sound = 'sound/items/pickup/card.ogg'
|
||||
|
||||
/obj/item/weapon/card/Initialize()
|
||||
/obj/item/weapon/card/New()
|
||||
. = ..()
|
||||
reset_icon()
|
||||
|
||||
|
||||
@@ -110,9 +110,9 @@ GLOBAL_LIST_BOILERPLATE(all_tracking_implants, /obj/item/weapon/implant/tracking
|
||||
/obj/item/weapon/implant/tracking/weak //This is for the loadout
|
||||
degrade_time = 2.5 MINUTES
|
||||
|
||||
/obj/item/weapon/implant/tracking/Initialize()
|
||||
/obj/item/weapon/implant/tracking/New()
|
||||
id = rand(1, 1000)
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/implant/tracking/post_implant(var/mob/source)
|
||||
START_PROCESSING(SSobj, src)
|
||||
@@ -375,8 +375,8 @@ Can only be loaded while still in its original case.<BR>
|
||||
the implant may become unstable and either pre-maturely inject the subject or simply break."}
|
||||
return dat
|
||||
|
||||
/obj/item/weapon/implant/chem/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/implant/chem/New()
|
||||
..()
|
||||
var/datum/reagents/R = new/datum/reagents(50)
|
||||
reagents = R
|
||||
R.my_atom = src
|
||||
|
||||
@@ -67,213 +67,245 @@
|
||||
desc = "A case containing a tracking implant."
|
||||
icon_state = "implantcase-b"
|
||||
|
||||
/obj/item/weapon/implantcase/tracking/Initialize()
|
||||
/obj/item/weapon/implantcase/tracking/New()
|
||||
src.imp = new /obj/item/weapon/implant/tracking( src )
|
||||
. = ..()
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/implantcase/explosive
|
||||
name = "glass case - 'explosive'"
|
||||
desc = "A case containing an explosive implant."
|
||||
icon_state = "implantcase-r"
|
||||
|
||||
/obj/item/weapon/implantcase/explosive/Initialize()
|
||||
/obj/item/weapon/implantcase/explosive/New()
|
||||
src.imp = new /obj/item/weapon/implant/explosive( src )
|
||||
. = ..()
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/implantcase/chem
|
||||
name = "glass case - 'chem'"
|
||||
desc = "A case containing a chemical implant."
|
||||
icon_state = "implantcase-b"
|
||||
|
||||
/obj/item/weapon/implantcase/chem/Initialize()
|
||||
/obj/item/weapon/implantcase/chem/New()
|
||||
src.imp = new /obj/item/weapon/implant/chem( src )
|
||||
. = ..()
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/implantcase/loyalty
|
||||
name = "glass case - 'loyalty'"
|
||||
desc = "A case containing a loyalty implant."
|
||||
icon_state = "implantcase-r"
|
||||
|
||||
/obj/item/weapon/implantcase/loyalty/Initialize()
|
||||
/obj/item/weapon/implantcase/loyalty/New()
|
||||
src.imp = new /obj/item/weapon/implant/loyalty( src )
|
||||
. = ..()
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/implantcase/death_alarm
|
||||
name = "glass case - 'death alarm'"
|
||||
desc = "A case containing a death alarm implant."
|
||||
icon_state = "implantcase-b"
|
||||
|
||||
/obj/item/weapon/implantcase/death_alarm/Initialize()
|
||||
/obj/item/weapon/implantcase/death_alarm/New()
|
||||
src.imp = new /obj/item/weapon/implant/death_alarm( src )
|
||||
. = ..()
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/implantcase/freedom
|
||||
name = "glass case - 'freedom'"
|
||||
desc = "A case containing a freedom implant."
|
||||
icon_state = "implantcase-r"
|
||||
|
||||
/obj/item/weapon/implantcase/freedom/Initialize()
|
||||
/obj/item/weapon/implantcase/freedom/New()
|
||||
src.imp = new /obj/item/weapon/implant/freedom( src )
|
||||
. = ..()
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/implantcase/adrenalin
|
||||
name = "glass case - 'adrenalin'"
|
||||
desc = "A case containing an adrenalin implant."
|
||||
icon_state = "implantcase-b"
|
||||
|
||||
/obj/item/weapon/implantcase/adrenalin/Initialize()
|
||||
/obj/item/weapon/implantcase/adrenalin/New()
|
||||
src.imp = new /obj/item/weapon/implant/adrenalin( src )
|
||||
. = ..()
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/implantcase/dexplosive
|
||||
name = "glass case - 'explosive'"
|
||||
desc = "A case containing an explosive."
|
||||
icon_state = "implantcase-r"
|
||||
|
||||
/obj/item/weapon/implantcase/dexplosive/Initialize()
|
||||
/obj/item/weapon/implantcase/dexplosive/New()
|
||||
src.imp = new /obj/item/weapon/implant/dexplosive( src )
|
||||
. = ..()
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/implantcase/health
|
||||
name = "glass case - 'health'"
|
||||
desc = "A case containing a health tracking implant."
|
||||
icon_state = "implantcase-b"
|
||||
|
||||
/obj/item/weapon/implantcase/health/Initialize()
|
||||
/obj/item/weapon/implantcase/health/New()
|
||||
src.imp = new /obj/item/weapon/implant/health( src )
|
||||
. = ..()
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/implantcase/language
|
||||
name = "glass case - 'GalCom'"
|
||||
desc = "A case containing a GalCom language implant."
|
||||
icon_state = "implantcase-b"
|
||||
|
||||
/obj/item/weapon/implantcase/language/Initialize()
|
||||
/obj/item/weapon/implantcase/language/New()
|
||||
src.imp = new /obj/item/weapon/implant/language( src )
|
||||
. = ..()
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/implantcase/language/eal
|
||||
name = "glass case - 'EAL'"
|
||||
desc = "A case containing an Encoded Audio Language implant."
|
||||
icon_state = "implantcase-b"
|
||||
|
||||
/obj/item/weapon/implantcase/language/eal/Initialize()
|
||||
/obj/item/weapon/implantcase/language/eal/New()
|
||||
src.imp = new /obj/item/weapon/implant/language/eal( src )
|
||||
. = ..()
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/implantcase/shades
|
||||
name = "glass case - 'Integrated Shades'"
|
||||
desc = "A case containing a nanite fabricator implant."
|
||||
icon_state = "implantcase-b"
|
||||
|
||||
/obj/item/weapon/implantcase/shades/Initialize()
|
||||
/obj/item/weapon/implantcase/shades/New()
|
||||
src.imp = new /obj/item/weapon/implant/organ( src )
|
||||
. = ..()
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/implantcase/taser
|
||||
name = "glass case - 'Taser'"
|
||||
desc = "A case containing a nanite fabricator implant."
|
||||
icon_state = "implantcase-b"
|
||||
|
||||
/obj/item/weapon/implantcase/taser/Initialize()
|
||||
/obj/item/weapon/implantcase/taser/New()
|
||||
src.imp = new /obj/item/weapon/implant/organ/limbaugment( src )
|
||||
. = ..()
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/implantcase/laser
|
||||
name = "glass case - 'Laser'"
|
||||
desc = "A case containing a nanite fabricator implant."
|
||||
icon_state = "implantcase-b"
|
||||
|
||||
/obj/item/weapon/implantcase/laser/Initialize()
|
||||
/obj/item/weapon/implantcase/laser/New()
|
||||
src.imp = new /obj/item/weapon/implant/organ/limbaugment/laser( src )
|
||||
. = ..()
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/implantcase/dart
|
||||
name = "glass case - 'Dart'"
|
||||
desc = "A case containing a nanite fabricator implant."
|
||||
icon_state = "implantcase-b"
|
||||
|
||||
/obj/item/weapon/implantcase/dart/Initialize()
|
||||
/obj/item/weapon/implantcase/dart/New()
|
||||
src.imp = new /obj/item/weapon/implant/organ/limbaugment/dart( src )
|
||||
. = ..()
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/implantcase/toolkit
|
||||
name = "glass case - 'Toolkit'"
|
||||
desc = "A case containing a nanite fabricator implant."
|
||||
icon_state = "implantcase-b"
|
||||
|
||||
/obj/item/weapon/implantcase/toolkit/Initialize()
|
||||
/obj/item/weapon/implantcase/toolkit/New()
|
||||
src.imp = new /obj/item/weapon/implant/organ/limbaugment/upperarm( src )
|
||||
. = ..()
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/implantcase/medkit
|
||||
name = "glass case - 'Toolkit'"
|
||||
desc = "A case containing a nanite fabricator implant."
|
||||
icon_state = "implantcase-b"
|
||||
|
||||
/obj/item/weapon/implantcase/medkit/Initialize()
|
||||
/obj/item/weapon/implantcase/medkit/New()
|
||||
src.imp = new /obj/item/weapon/implant/organ/limbaugment/upperarm/medkit( src )
|
||||
. = ..()
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/implantcase/surge
|
||||
name = "glass case - 'Muscle Overclocker'"
|
||||
desc = "A case containing a nanite fabricator implant."
|
||||
icon_state = "implantcase-b"
|
||||
|
||||
/obj/item/weapon/implantcase/surge/Initialize()
|
||||
/obj/item/weapon/implantcase/surge/New()
|
||||
src.imp = new /obj/item/weapon/implant/organ/limbaugment/upperarm/surge( src )
|
||||
. = ..()
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/implantcase/analyzer
|
||||
name = "glass case - 'Scanner'"
|
||||
desc = "A case containing a nanite fabricator implant."
|
||||
icon_state = "implantcase-b"
|
||||
|
||||
/obj/item/weapon/implantcase/analyzer/Initialize()
|
||||
/obj/item/weapon/implantcase/analyzer/New()
|
||||
src.imp = new /obj/item/weapon/implant/organ/limbaugment/wrist( src )
|
||||
. = ..()
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/implantcase/sword
|
||||
name = "glass case - 'Scanner'"
|
||||
desc = "A case containing a nanite fabricator implant."
|
||||
icon_state = "implantcase-b"
|
||||
|
||||
/obj/item/weapon/implantcase/sword/Initialize()
|
||||
/obj/item/weapon/implantcase/sword/New()
|
||||
src.imp = new /obj/item/weapon/implant/organ/limbaugment/wrist/sword( src )
|
||||
. = ..()
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/implantcase/sprinter
|
||||
name = "glass case - 'Sprinter'"
|
||||
desc = "A case containing a nanite fabricator implant."
|
||||
icon_state = "implantcase-b"
|
||||
|
||||
/obj/item/weapon/implantcase/sprinter/Initialize()
|
||||
/obj/item/weapon/implantcase/sprinter/New()
|
||||
src.imp = new /obj/item/weapon/implant/organ/pelvic( src )
|
||||
. = ..()
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/implantcase/armblade
|
||||
name = "glass case - 'Armblade'"
|
||||
desc = "A case containing a nanite fabricator implant."
|
||||
icon_state = "implantcase-b"
|
||||
|
||||
/obj/item/weapon/implantcase/armblade/Initialize()
|
||||
/obj/item/weapon/implantcase/armblade/New()
|
||||
src.imp = new /obj/item/weapon/implant/organ/limbaugment/upperarm/blade( src )
|
||||
. = ..()
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/implantcase/handblade
|
||||
name = "glass case - 'Handblade'"
|
||||
desc = "A case containing a nanite fabricator implant."
|
||||
icon_state = "implantcase-b"
|
||||
|
||||
/obj/item/weapon/implantcase/handblade/Initialize()
|
||||
/obj/item/weapon/implantcase/handblade/New()
|
||||
src.imp = new /obj/item/weapon/implant/organ/limbaugment/wrist/blade( src )
|
||||
. = ..()
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/implantcase/restrainingbolt
|
||||
name = "glass case - 'Restraining Bolt'"
|
||||
desc = "A case containing a restraining bolt."
|
||||
icon_state = "implantcase-b"
|
||||
|
||||
/obj/item/weapon/implantcase/restrainingbolt/Initialize()
|
||||
/obj/item/weapon/implantcase/restrainingbolt/New()
|
||||
src.imp = new /obj/item/weapon/implant/restrainingbolt( src )
|
||||
. = ..()
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
var/mob/living/carbon/occupant = null
|
||||
var/injecting = 0
|
||||
|
||||
/obj/machinery/implantchair/Initialize()
|
||||
. = ..()
|
||||
/obj/machinery/implantchair/New()
|
||||
..()
|
||||
add_implants()
|
||||
|
||||
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
/obj/item/weapon/implant/integrated_circuit/islegal()
|
||||
return TRUE
|
||||
|
||||
/obj/item/weapon/implant/integrated_circuit/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/implant/integrated_circuit/New()
|
||||
..()
|
||||
IC = new(src)
|
||||
IC.implant = src
|
||||
|
||||
|
||||
@@ -33,12 +33,15 @@
|
||||
|
||||
update()
|
||||
|
||||
return
|
||||
|
||||
/obj/item/weapon/implanter/proc/update()
|
||||
if (src.imp)
|
||||
src.icon_state = "implanter1"
|
||||
else
|
||||
src.icon_state = "implanter0"
|
||||
src.icon_state += "_[active]"
|
||||
return
|
||||
|
||||
/obj/item/weapon/implanter/attack(mob/M as mob, mob/user as mob)
|
||||
if (!istype(M, /mob/living/carbon))
|
||||
@@ -74,35 +77,39 @@
|
||||
/obj/item/weapon/implanter/loyalty
|
||||
name = "implanter-loyalty"
|
||||
|
||||
/obj/item/weapon/implanter/loyalty/Initialize()
|
||||
/obj/item/weapon/implanter/loyalty/New()
|
||||
src.imp = new /obj/item/weapon/implant/loyalty( src )
|
||||
. = ..()
|
||||
..()
|
||||
update()
|
||||
return
|
||||
|
||||
/obj/item/weapon/implanter/explosive
|
||||
name = "implanter (E)"
|
||||
|
||||
/obj/item/weapon/implanter/explosive/Initialize()
|
||||
/obj/item/weapon/implanter/explosive/New()
|
||||
src.imp = new /obj/item/weapon/implant/explosive( src )
|
||||
. = ..()
|
||||
..()
|
||||
update()
|
||||
return
|
||||
|
||||
/obj/item/weapon/implanter/adrenalin
|
||||
name = "implanter-adrenalin"
|
||||
|
||||
/obj/item/weapon/implanter/adrenalin/Initialize()
|
||||
/obj/item/weapon/implanter/adrenalin/New()
|
||||
src.imp = new /obj/item/weapon/implant/adrenalin(src)
|
||||
. = ..()
|
||||
..()
|
||||
update()
|
||||
return
|
||||
|
||||
/obj/item/weapon/implanter/compressed
|
||||
name = "implanter (C)"
|
||||
icon_state = "cimplanter1"
|
||||
|
||||
/obj/item/weapon/implanter/compressed/Initialize()
|
||||
/obj/item/weapon/implanter/compressed/New()
|
||||
imp = new /obj/item/weapon/implant/compressed( src )
|
||||
. = ..()
|
||||
..()
|
||||
update()
|
||||
return
|
||||
|
||||
/obj/item/weapon/implanter/compressed/update()
|
||||
if (imp)
|
||||
@@ -113,6 +120,7 @@
|
||||
icon_state = "cimplanter2"
|
||||
else
|
||||
icon_state = "cimplanter0"
|
||||
return
|
||||
|
||||
/obj/item/weapon/implanter/compressed/attack(mob/M as mob, mob/user as mob)
|
||||
var/obj/item/weapon/implant/compressed/c = imp
|
||||
@@ -150,7 +158,8 @@
|
||||
/obj/item/weapon/implanter/restrainingbolt
|
||||
name = "implanter (bolt)"
|
||||
|
||||
/obj/item/weapon/implanter/restrainingbolt/Initialize()
|
||||
/obj/item/weapon/implanter/restrainingbolt/New()
|
||||
src.imp = new /obj/item/weapon/implant/restrainingbolt( src )
|
||||
. = ..()
|
||||
..()
|
||||
update()
|
||||
return
|
||||
|
||||
@@ -8,10 +8,12 @@
|
||||
var/uses = 1.0
|
||||
|
||||
|
||||
/obj/item/weapon/implant/freedom/Initialize()
|
||||
/obj/item/weapon/implant/freedom/New()
|
||||
src.activation_emote = pick("blink", "blink_r", "eyebrow", "chuckle", "twitch", "frown", "nod", "blush", "giggle", "grin", "groan", "shrug", "smile", "pale", "sniff", "whimper", "wink")
|
||||
src.uses = rand(1, 5)
|
||||
. = ..()
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/implant/freedom/trigger(emote, mob/living/carbon/source as mob)
|
||||
if (src.uses < 1)
|
||||
|
||||
@@ -3,12 +3,13 @@
|
||||
desc = "Summon things."
|
||||
var/activation_emote = "chuckle"
|
||||
|
||||
/obj/item/weapon/implant/uplink/Initialize()
|
||||
/obj/item/weapon/implant/uplink/New()
|
||||
activation_emote = pick("blink", "blink_r", "eyebrow", "chuckle", "twitch", "frown", "nod", "blush", "giggle", "grin", "groan", "shrug", "smile", "pale", "sniff", "whimper", "wink")
|
||||
hidden_uplink = new(src)
|
||||
//hidden_uplink.uses = 5
|
||||
//Code currently uses a mind var for telecrystals, balancing is currently an issue. Will investigate.
|
||||
. = ..()
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/implant/uplink/post_implant(mob/source)
|
||||
var/choices = list("blink", "blink_r", "eyebrow", "chuckle", "twitch", "frown", "nod", "blush", "giggle", "grin", "groan", "shrug", "smile", "pale", "sniff", "whimper", "wink")
|
||||
@@ -21,3 +22,4 @@
|
||||
/obj/item/weapon/implant/uplink/trigger(emote, mob/source as mob)
|
||||
if(hidden_uplink && usr == source) // Let's not have another people activate our uplink
|
||||
hidden_uplink.check_trigger(source, emote, activation_emote)
|
||||
return
|
||||
@@ -13,8 +13,8 @@
|
||||
author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
|
||||
title = "Station Repairs and Construction"
|
||||
|
||||
/obj/item/weapon/book/manual/engineering_construction/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/book/manual/engineering_construction/New()
|
||||
..()
|
||||
dat = {"
|
||||
|
||||
<html><head>
|
||||
@@ -35,8 +35,8 @@
|
||||
author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
|
||||
title = "Particle Accelerator User's Guide"
|
||||
|
||||
/obj/item/weapon/book/manual/engineering_particle_accelerator/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/book/manual/engineering_particle_accelerator/New()
|
||||
..()
|
||||
dat = {"<html>
|
||||
<head>
|
||||
<style>
|
||||
@@ -83,8 +83,8 @@
|
||||
author = "Central Engineering Division"
|
||||
title = "Supermatter Engine Operating Manual"
|
||||
|
||||
/obj/item/weapon/book/manual/supermatter_engine/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/book/manual/supermatter_engine/New()
|
||||
..()
|
||||
dat = {"<html>
|
||||
<head>
|
||||
<style>
|
||||
@@ -237,8 +237,8 @@
|
||||
author = "Cindy Crawfish"
|
||||
title = "R-UST Operating Manual"
|
||||
|
||||
/obj/item/weapon/book/manual/rust_engine/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/book/manual/rust_engine/New()
|
||||
..()
|
||||
dat = {"<html>
|
||||
<head>
|
||||
<style>
|
||||
@@ -278,8 +278,8 @@
|
||||
author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
|
||||
title = "Hacking"
|
||||
|
||||
/obj/item/weapon/book/manual/engineering_hacking/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/book/manual/engineering_hacking/New()
|
||||
..()
|
||||
dat = {"
|
||||
|
||||
<html><head>
|
||||
@@ -859,8 +859,8 @@
|
||||
author = "The Company"
|
||||
title = "Corporate Regulations"
|
||||
|
||||
/obj/item/weapon/book/manual/security_space_law/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/book/manual/security_space_law/New()
|
||||
..()
|
||||
dat = {"
|
||||
|
||||
<html><head>
|
||||
@@ -884,8 +884,8 @@
|
||||
author = "Medical Department"
|
||||
title = "Medical Diagnostics Manual"
|
||||
|
||||
/obj/item/weapon/book/manual/medical_diagnostics_manual/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/book/manual/medical_diagnostics_manual/New()
|
||||
..()
|
||||
dat = {"<html>
|
||||
<head>
|
||||
<style>
|
||||
@@ -932,8 +932,8 @@
|
||||
author = "Engineering Encyclopedia"
|
||||
title = "Engineering Textbook"
|
||||
|
||||
/obj/item/weapon/book/manual/engineering_guide/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/book/manual/engineering_guide/New()
|
||||
..()
|
||||
dat = {"
|
||||
|
||||
<html><head>
|
||||
|
||||
@@ -10,13 +10,15 @@ var/global/list/ashtray_cache = list()
|
||||
var/image/base_image
|
||||
var/max_butts = 10
|
||||
|
||||
/obj/item/weapon/material/ashtray/Initialize(var/ml, var/material_name)
|
||||
. = ..(ml, material_name)
|
||||
/obj/item/weapon/material/ashtray/New(var/newloc, var/material_name)
|
||||
..(newloc, material_name)
|
||||
if(!material)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
qdel(src)
|
||||
return
|
||||
max_butts = round(material.hardness/5) //This is arbitrary but whatever.
|
||||
randpixel_xy()
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/material/ashtray/update_icon()
|
||||
color = null
|
||||
@@ -90,11 +92,11 @@ var/global/list/ashtray_cache = list()
|
||||
update_icon()
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/material/ashtray/plastic/Initialize(var/ml)
|
||||
. = ..(ml, MAT_PLASTIC)
|
||||
/obj/item/weapon/material/ashtray/plastic/New(var/newloc)
|
||||
..(newloc, "plastic")
|
||||
|
||||
/obj/item/weapon/material/ashtray/bronze/Initialize(var/ml)
|
||||
. = ..(ml, MAT_BRONZE)
|
||||
/obj/item/weapon/material/ashtray/bronze/New(var/newloc)
|
||||
..(newloc, "bronze")
|
||||
|
||||
/obj/item/weapon/material/ashtray/glass/Initialize(var/ml)
|
||||
. = ..(ml, MAT_GLASS)
|
||||
/obj/item/weapon/material/ashtray/glass/New(var/newloc)
|
||||
..(newloc, "glass")
|
||||
|
||||
@@ -13,17 +13,17 @@
|
||||
slot_flags = SLOT_BACK
|
||||
|
||||
//Predefined materials go here.
|
||||
/obj/item/weapon/material/twohanded/baseballbat/metal/Initialize(var/ml)
|
||||
. = ..(ml, MAT_STEEL)
|
||||
/obj/item/weapon/material/twohanded/baseballbat/metal/New(var/newloc)
|
||||
..(newloc,"steel")
|
||||
|
||||
/obj/item/weapon/material/twohanded/baseballbat/uranium/Initialize(var/ml)
|
||||
. = ..(ml, MAT_URANIUM)
|
||||
/obj/item/weapon/material/twohanded/baseballbat/uranium/New(var/newloc)
|
||||
..(newloc,"uranium")
|
||||
|
||||
/obj/item/weapon/material/twohanded/baseballbat/gold/Initialize(var/ml)
|
||||
. = ..(ml, MAT_GOLD)
|
||||
/obj/item/weapon/material/twohanded/baseballbat/gold/New(var/newloc)
|
||||
..(newloc,"gold")
|
||||
|
||||
/obj/item/weapon/material/twohanded/baseballbat/platinum/Initialize(var/ml)
|
||||
. = ..(ml, MAT_PLATINUM)
|
||||
/obj/item/weapon/material/twohanded/baseballbat/platinum/New(var/newloc)
|
||||
..(newloc,"platinum")
|
||||
|
||||
/obj/item/weapon/material/twohanded/baseballbat/diamond/Initialize(var/ml)
|
||||
. = ..(ml, MAT_DIAMOND)
|
||||
/obj/item/weapon/material/twohanded/baseballbat/diamond/New(var/newloc)
|
||||
..(newloc,"diamond")
|
||||
@@ -1,5 +1,5 @@
|
||||
/obj/item/weapon/material/twohanded/baseballbat/foam/Initialize(var/ml)
|
||||
. = ..(ml, "foam")
|
||||
/obj/item/weapon/material/twohanded/baseballbat/foam/New(var/newloc)
|
||||
..(newloc,"foam")
|
||||
|
||||
/obj/item/weapon/material/sword/foam
|
||||
attack_verb = list("bonked","whacked")
|
||||
@@ -12,8 +12,8 @@
|
||||
force_divisor = 0
|
||||
unbreakable = 1
|
||||
|
||||
/obj/item/weapon/material/sword/foam/Initialize(var/ml)
|
||||
. = ..(ml, "foam")
|
||||
/obj/item/weapon/material/sword/foam/New(var/newloc)
|
||||
..(newloc,"foam")
|
||||
|
||||
/obj/item/weapon/material/twohanded/spear/foam
|
||||
attack_verb = list("bonked","whacked")
|
||||
@@ -24,8 +24,8 @@
|
||||
icon_state = "spear_mask0"
|
||||
unbreakable = 1
|
||||
|
||||
/obj/item/weapon/material/twohanded/spear/foam/Initialize(var/ml)
|
||||
. = ..(ml, "foam")
|
||||
/obj/item/weapon/material/twohanded/spear/foam/New(var/newloc)
|
||||
..(newloc,"foam")
|
||||
|
||||
/obj/item/weapon/material/twohanded/fireaxe/foam
|
||||
attack_verb = list("bonked","whacked")
|
||||
@@ -36,8 +36,8 @@
|
||||
icon_state = "fireaxe_mask0"
|
||||
unbreakable = 1
|
||||
|
||||
/obj/item/weapon/material/twohanded/fireaxe/foam/Initialize(var/ml)
|
||||
. = ..(ml,"foam")
|
||||
/obj/item/weapon/material/twohanded/fireaxe/foam/New(var/newloc)
|
||||
..(newloc,"foam")
|
||||
|
||||
/obj/item/weapon/material/twohanded/fireaxe/foam/afterattack()
|
||||
return
|
||||
@@ -35,8 +35,8 @@ Protectiveness | Armor %
|
||||
var/material_slowdown_modifier = 0
|
||||
var/material_slowdown_multiplier = 0.5
|
||||
|
||||
/obj/item/clothing/Initialize(var/ml, var/material_key)
|
||||
. = ..(ml)
|
||||
/obj/item/clothing/New(var/newloc, var/material_key)
|
||||
..(newloc)
|
||||
if(!material_key)
|
||||
material_key = default_material
|
||||
if(material_key) // May still be null if a material was not specified as a default.
|
||||
|
||||
@@ -27,8 +27,8 @@
|
||||
var/datum/material/material
|
||||
var/drops_debris = 1
|
||||
|
||||
/obj/item/weapon/material/Initialize(var/ml, var/material_key)
|
||||
. = ..(ml)
|
||||
/obj/item/weapon/material/New(var/newloc, var/material_key)
|
||||
..(newloc)
|
||||
if(!material_key)
|
||||
material_key = default_material
|
||||
set_material(material_key)
|
||||
|
||||
@@ -142,8 +142,8 @@
|
||||
return
|
||||
|
||||
// Preset types - left here for the code that uses them
|
||||
/obj/item/weapon/material/shard/shrapnel/Initialize(var/ml)
|
||||
. = ..(ml, MAT_STEEL)
|
||||
/obj/item/weapon/material/shard/shrapnel/New(loc)
|
||||
..(loc, "steel")
|
||||
|
||||
/obj/item/weapon/material/shard/phoron/Initialize(var/ml)
|
||||
. = ..(ml, "borosilicate glass")
|
||||
/obj/item/weapon/material/shard/phoron/New(loc)
|
||||
..(loc, "borosilicate glass")
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
sharp = TRUE
|
||||
edge = TRUE
|
||||
|
||||
/obj/item/weapon/material/star/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/material/star/New()
|
||||
..()
|
||||
src.pixel_x = rand(-12, 12)
|
||||
src.pixel_y = rand(-12, 12)
|
||||
|
||||
|
||||
@@ -56,8 +56,8 @@
|
||||
throwforce = round(force*thrown_force_divisor)
|
||||
//to_world("[src] has unwielded force [force_unwielded], wielded force [force_wielded] and throwforce [throwforce] when made from default material [material.name]")
|
||||
|
||||
/obj/item/weapon/material/twohanded/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/material/twohanded/New()
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
//Allow a small chance of parrying melee attacks when wielded - maybe generalize this to other weapons someday
|
||||
|
||||
@@ -23,28 +23,23 @@
|
||||
slot_r_hand_str = 'icons/mob/items/righthand_melee.dmi',
|
||||
)
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/green/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/melee/energy/sword/green/New()
|
||||
colorable = FALSE
|
||||
lcolor = "#008000"
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/red/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/melee/energy/sword/red/New()
|
||||
colorable = FALSE
|
||||
lcolor = "#FF0000"
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/blue/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/melee/energy/sword/blue/New()
|
||||
colorable = FALSE
|
||||
lcolor = "#0000FF"
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/purple/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/melee/energy/sword/purple/New()
|
||||
colorable = FALSE
|
||||
lcolor = "#800080"
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/white/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/melee/energy/sword/white/New()
|
||||
colorable = FALSE
|
||||
lcolor = "#FFFFFF"
|
||||
|
||||
@@ -246,8 +241,8 @@
|
||||
use_cell = TRUE
|
||||
hitcost = 120
|
||||
|
||||
/obj/item/weapon/melee/energy/axe/charge/loaded/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/melee/energy/axe/charge/loaded/New()
|
||||
..()
|
||||
bcell = new/obj/item/weapon/cell/device/weapon(src)
|
||||
|
||||
/*
|
||||
@@ -406,8 +401,8 @@
|
||||
|
||||
hitcost = 75
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/charge/loaded/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/melee/energy/sword/charge/loaded/New()
|
||||
..()
|
||||
bcell = new/obj/item/weapon/cell/device/weapon(src)
|
||||
|
||||
//Energy Blade (ninja uses this)
|
||||
@@ -434,8 +429,7 @@
|
||||
projectile_parry_chance = 60
|
||||
lcolor = "#00FF00"
|
||||
|
||||
/obj/item/weapon/melee/energy/blade/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/melee/energy/blade/New()
|
||||
|
||||
spark_system = new /datum/effect/effect/system/spark_spread()
|
||||
spark_system.set_up(5, 0, src)
|
||||
|
||||
@@ -37,8 +37,8 @@
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
var/open = FALSE
|
||||
|
||||
/obj/item/weapon/melee/umbrella/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/melee/umbrella/New()
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/melee/umbrella/attack_self()
|
||||
@@ -56,9 +56,9 @@
|
||||
H.update_inv_r_hand()
|
||||
|
||||
// Randomizes color
|
||||
/obj/item/weapon/melee/umbrella/random/Initialize()
|
||||
/obj/item/weapon/melee/umbrella/random/New()
|
||||
color = get_random_colour()
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/melee/cursedblade
|
||||
name = "crystal blade"
|
||||
|
||||
@@ -18,9 +18,9 @@ GLOBAL_LIST_BOILERPLATE(all_mops, /obj/item/weapon/mop)
|
||||
var/mopping = 0
|
||||
var/mopcount = 0
|
||||
|
||||
/obj/item/weapon/mop/Initialize()
|
||||
/obj/item/weapon/mop/New()
|
||||
create_reagents(30)
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/mop/afterattack(atom/A, mob/user, proximity)
|
||||
if(!proximity) return
|
||||
|
||||
@@ -15,10 +15,9 @@
|
||||
var/mopcount = 0
|
||||
|
||||
|
||||
/obj/item/weapon/mop_deploy/Initialize()
|
||||
/obj/item/weapon/mop_deploy/New()
|
||||
create_reagents(5)
|
||||
START_PROCESSING(SSobj, src)
|
||||
. = ..()
|
||||
|
||||
/turf/proc/clean_deploy(atom/source)
|
||||
if(source.reagents.has_reagent("water", 1))
|
||||
|
||||
@@ -26,10 +26,10 @@ var/global/list/cached_icons = list()
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/paint/Initialize()
|
||||
/obj/item/weapon/reagent_containers/glass/paint/New()
|
||||
if(paint_type && length(paint_type) > 0)
|
||||
name = paint_type + " " + name
|
||||
. = ..()
|
||||
..()
|
||||
reagents.add_reagent("water", volume*3/5)
|
||||
reagents.add_reagent("plasticide", volume/5)
|
||||
if(paint_type == "white") //why don't white crayons exist
|
||||
|
||||
@@ -52,8 +52,8 @@ var/list/tape_roll_applications = list()
|
||||
icon_state = "[icon_base]_dir_[crumpled]"
|
||||
dir = tape_dir
|
||||
|
||||
/obj/item/tape/Initialize()
|
||||
. = ..()
|
||||
/obj/item/tape/New()
|
||||
..()
|
||||
if(!hazard_overlays)
|
||||
hazard_overlays = list()
|
||||
hazard_overlays["[NORTH]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "N")
|
||||
|
||||
@@ -90,6 +90,8 @@ GLOBAL_LIST_INIT(bibleitemstates, list(
|
||||
name = "bible"
|
||||
desc = "To be applied to the head repeatedly."
|
||||
icon_state ="bible"
|
||||
|
||||
/obj/item/weapon/storage/bible/booze/New()
|
||||
starts_with = list(
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer,
|
||||
|
||||
@@ -4,14 +4,12 @@
|
||||
preserve_item = 1
|
||||
var/obj/item/master_item
|
||||
|
||||
/obj/item/weapon/storage/internal/Initialize()
|
||||
. = ..()
|
||||
master_item = loc
|
||||
if(!istype(master_item))
|
||||
return INITIALIZE_HINT_QDEL
|
||||
/obj/item/weapon/storage/internal/New(obj/item/MI)
|
||||
master_item = MI
|
||||
loc = master_item
|
||||
name = master_item.name
|
||||
verbs -= /obj/item/verb/verb_pickup //make sure this is never picked up.
|
||||
..()
|
||||
|
||||
/obj/item/weapon/storage/internal/Destroy()
|
||||
master_item = null
|
||||
|
||||
@@ -852,8 +852,7 @@
|
||||
alpha = 200
|
||||
var/weakref/held_item
|
||||
|
||||
/atom/movable/storage_slot/Initialize(ml, obj/item/held_item)
|
||||
. = ..()
|
||||
/atom/movable/storage_slot/New(newloc, obj/item/held_item)
|
||||
ASSERT(held_item)
|
||||
name += held_item.name
|
||||
src.held_item = weakref(held_item)
|
||||
@@ -899,4 +898,4 @@
|
||||
var/obj/item/weapon/holder/H = new user.holder_type(get_turf(user), user)
|
||||
src.handle_item_insertion(H, 1)
|
||||
to_chat(user, "<span class='notice'>You climb into \the [src].</span>")
|
||||
return ..()
|
||||
return ..()
|
||||
@@ -86,8 +86,8 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/storage/wallet/random/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/storage/wallet/random/New()
|
||||
..()
|
||||
var/amount = rand(50, 100) + rand(50, 100) // Triangular distribution from 100 to 200
|
||||
var/obj/item/weapon/spacecash/SC = null
|
||||
SC = new(src)
|
||||
@@ -104,8 +104,8 @@
|
||||
desc = "You can recolor it! Fancy! The future is NOW!"
|
||||
icon_state = "wallet-white"
|
||||
|
||||
/obj/item/weapon/storage/wallet/poly/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/storage/wallet/poly/New()
|
||||
..()
|
||||
verbs |= /obj/item/weapon/storage/wallet/poly/proc/change_color
|
||||
color = get_random_colour()
|
||||
update_icon()
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
var/hitcost = 240
|
||||
var/use_external_power = FALSE //only used to determine if it's a cyborg baton
|
||||
|
||||
/obj/item/weapon/melee/baton/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/melee/baton/New()
|
||||
..()
|
||||
update_icon()
|
||||
return
|
||||
|
||||
@@ -63,13 +63,20 @@
|
||||
usr.put_in_l_hand(src)
|
||||
src.add_fingerprint(usr)
|
||||
|
||||
/obj/item/weapon/melee/baton/loaded/Initialize() //this one starts with a cell pre-installed.
|
||||
. = ..()
|
||||
/obj/item/weapon/melee/baton/loaded/New() //this one starts with a cell pre-installed.
|
||||
..()
|
||||
bcell = new/obj/item/weapon/cell/device/weapon(src)
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/melee/baton/proc/deductcharge(var/chrgdeductamt)
|
||||
return (status == 1 && bcell?.checked_use(chrgdeductamt))
|
||||
if(status == 1) //Only deducts charge when it's on
|
||||
if(bcell)
|
||||
if(bcell.checked_use(chrgdeductamt))
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
return null
|
||||
|
||||
/obj/item/weapon/melee/baton/proc/powercheck(var/chrgdeductamt)
|
||||
if(bcell)
|
||||
|
||||
@@ -37,8 +37,7 @@
|
||||
light_impact = 7
|
||||
flash_range = 7
|
||||
|
||||
/obj/item/weapon/syndie/c4explosive/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/syndie/c4explosive/New()
|
||||
var/K = rand(1,2000)
|
||||
K = md5(num2text(K)+name)
|
||||
K = copytext(K,1,7)
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
var/volume_rate = 500 //Needed for borg jetpack transfer
|
||||
action_button_name = "Toggle Jetpack"
|
||||
|
||||
/obj/item/weapon/tank/jetpack/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/tank/jetpack/New()
|
||||
..()
|
||||
ion_trail = new /datum/effect/effect/system/ion_trail_follow()
|
||||
ion_trail.set_up(src)
|
||||
|
||||
|
||||
@@ -563,29 +563,29 @@ var/list/global/tank_gauge_cache = list()
|
||||
add_overlay("bomb_assembly")
|
||||
|
||||
|
||||
/obj/item/weapon/tank/phoron/onetankbomb/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/tank/phoron/onetankbomb/New()
|
||||
..()
|
||||
src.onetankbomb()
|
||||
|
||||
/obj/item/weapon/tank/oxygen/onetankbomb/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/tank/oxygen/onetankbomb/New()
|
||||
..()
|
||||
src.onetankbomb()
|
||||
|
||||
|
||||
/obj/item/weapon/tank/phoron/onetankbomb/full/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/tank/phoron/onetankbomb/full/New()
|
||||
..()
|
||||
src.onetankbomb(2)
|
||||
|
||||
/obj/item/weapon/tank/oxygen/onetankbomb/full/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/tank/oxygen/onetankbomb/full/New()
|
||||
..()
|
||||
src.onetankbomb(2)
|
||||
|
||||
/obj/item/weapon/tank/phoron/onetankbomb/small/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/tank/phoron/onetankbomb/small/New()
|
||||
..()
|
||||
src.onetankbomb(0)
|
||||
|
||||
/obj/item/weapon/tank/oxygen/onetankbomb/small/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/tank/oxygen/onetankbomb/small/New()
|
||||
..()
|
||||
src.onetankbomb(0)
|
||||
|
||||
/////////////////////////////////
|
||||
|
||||
@@ -122,8 +122,8 @@
|
||||
|
||||
var/obj/item/weapon/stuck = null
|
||||
|
||||
/obj/item/weapon/ducttape/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/ducttape/New()
|
||||
..()
|
||||
flags |= NOBLUDGEON
|
||||
|
||||
/obj/item/weapon/ducttape/examine(mob/user)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user