mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-21 15:42:53 +00:00
Merge remote-tracking branch 'upstream/dev' into BorgModules
Conflicts: code/game/objects/items/robot/robot_upgrades.dm code/modules/mob/living/silicon/ai/subsystems.dm code/modules/mob/living/silicon/robot/robot.dm code/modules/mob/living/silicon/robot/robot_upgrades.dm
This commit is contained in:
@@ -2,4 +2,4 @@
|
||||
..()
|
||||
spawn(0)
|
||||
if(src && !key) //we've transferred to another mob. This ghost should be deleted.
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
@@ -81,10 +81,10 @@ var/global/list/image/ghost_sightless_images = list() //this is a list of images
|
||||
real_name = name
|
||||
..()
|
||||
|
||||
/mob/dead/observer/Del()
|
||||
/mob/dead/observer/Destroy()
|
||||
if (ghostimage)
|
||||
ghost_darkness_images -= ghostimage
|
||||
del(ghostimage)
|
||||
qdel(ghostimage)
|
||||
ghostimage = null
|
||||
updateallghostimages()
|
||||
..()
|
||||
@@ -598,7 +598,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
for(var/image/I in client.images)
|
||||
if(I.icon_state == icon)
|
||||
iconRemoved = 1
|
||||
del(I)
|
||||
qdel(I)
|
||||
|
||||
if(!iconRemoved)
|
||||
var/image/J = image('icons/mob/mob.dmi', loc = src, icon_state = icon)
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
if(do_gibs) gibs(loc, viruses, dna)
|
||||
|
||||
spawn(15)
|
||||
if(animation) del(animation)
|
||||
if(src) del(src)
|
||||
if(animation) qdel(animation)
|
||||
if(src) qdel(src)
|
||||
|
||||
//This is the proc for turning a mob into ash. Mostly a copy of gib code (above).
|
||||
//Originally created for wizard disintegrate. I've removed the virus code since it's irrelevant here.
|
||||
@@ -43,8 +43,8 @@
|
||||
|
||||
dead_mob_list -= src
|
||||
spawn(15)
|
||||
if(animation) del(animation)
|
||||
if(src) del(src)
|
||||
if(animation) qdel(animation)
|
||||
if(src) qdel(src)
|
||||
|
||||
|
||||
/mob/proc/death(gibbed,deathmessage="seizes up and falls limp...")
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
// The datum containing all the chunks.
|
||||
|
||||
/datum/visualnet/camera
|
||||
// The cameras on the map, no matter if they work or not. Updated in obj/machinery/camera.dm by New() and Del().
|
||||
// The cameras on the map, no matter if they work or not. Updated in obj/machinery/camera.dm by New() and Destroy().
|
||||
var/list/cameras = list()
|
||||
var/cameras_unsorted = 1
|
||||
chunk_type = /datum/chunk/camera
|
||||
|
||||
@@ -39,10 +39,11 @@
|
||||
if(eyeobj)
|
||||
eyeobj.loc = src.loc
|
||||
|
||||
/mob/living/silicon/ai/Del()
|
||||
/mob/living/silicon/ai/Destroy()
|
||||
if(eyeobj)
|
||||
eyeobj.owner = null
|
||||
del(eyeobj) // No AI, no Eye
|
||||
qdel(eyeobj) // No AI, no Eye
|
||||
eyeobj = null
|
||||
..()
|
||||
|
||||
/atom/proc/move_camera_by_click()
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
dd_insertObjectList(cameranet.cameras, src)
|
||||
update_coverage(1)
|
||||
|
||||
/obj/machinery/camera/Del()
|
||||
/obj/machinery/camera/Destroy()
|
||||
cameranet.cameras -= src
|
||||
clear_all_networks()
|
||||
..()
|
||||
|
||||
@@ -31,11 +31,11 @@
|
||||
updateallghostimages()
|
||||
..()
|
||||
|
||||
mob/eye/Del()
|
||||
mob/eye/Destroy()
|
||||
if (ghostimage)
|
||||
ghost_darkness_images -= ghostimage
|
||||
ghost_sightless_images -= ghostimage
|
||||
del(ghostimage)
|
||||
qdel(ghostimage)
|
||||
ghostimage = null
|
||||
updateallghostimages()
|
||||
..()
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
..()
|
||||
cultnet.updateVisibility(src, 0)
|
||||
|
||||
/mob/living/Del()
|
||||
/mob/living/Destroy()
|
||||
cultnet.updateVisibility(src, 0)
|
||||
..()
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
HOW IT WORKS
|
||||
|
||||
It works by first creating a camera network datum. Inside of this camera network are "chunks" (which will be
|
||||
explained later) and "cameras". The cameras list is kept up to date by obj/machinery/camera/New() and Del().
|
||||
explained later) and "cameras". The cameras list is kept up to date by obj/machinery/camera/New() and Destroy().
|
||||
|
||||
Next the camera network has chunks. These chunks are a 16x16 tile block of turfs and cameras contained inside the chunk.
|
||||
These turfs are then sorted out based on what the cameras can and cannot see. If none of the cameras can see the turf, inside
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
/turf/drain_power()
|
||||
return -1
|
||||
|
||||
/turf/simulated/Del()
|
||||
/turf/simulated/Destroy()
|
||||
updateVisibility(src)
|
||||
..()
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
// STRUCTURES
|
||||
|
||||
/obj/structure/Del()
|
||||
/obj/structure/Destroy()
|
||||
updateVisibility(src)
|
||||
..()
|
||||
|
||||
@@ -34,9 +34,9 @@
|
||||
|
||||
// EFFECTS
|
||||
|
||||
/obj/effect/Del()
|
||||
/obj/effect/Destroy()
|
||||
updateVisibility(src)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/effect/New()
|
||||
..()
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
..()
|
||||
visual_nets += src
|
||||
|
||||
/datum/visualnet/Del()
|
||||
/datum/visualnet/Destroy()
|
||||
visual_nets -= src
|
||||
..()
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
..()
|
||||
processing_objects.Add(src)
|
||||
|
||||
/obj/item/weapon/holder/Del()
|
||||
/obj/item/weapon/holder/Destroy()
|
||||
processing_objects.Remove(src)
|
||||
..()
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
mob_container.forceMove(get_turf(src))
|
||||
M.reset_view()
|
||||
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/holder/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
for(var/mob/M in src.contents)
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
if(!W.mob_can_equip(src, slot))
|
||||
if(del_on_fail)
|
||||
del(W)
|
||||
qdel(W)
|
||||
else
|
||||
if(!disable_warning)
|
||||
src << "\red You are unable to equip that." //Only print if del_on_fail is false
|
||||
|
||||
@@ -246,7 +246,7 @@
|
||||
B << "To create this node you will have to be on a normal blob tile and far enough away from any other node."
|
||||
B << "Check your Blob verbs and hit Create Node to build a node."
|
||||
spawn(10)
|
||||
del(G_found)
|
||||
qdel(G_found)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
if(istype(loc,/obj/item/weapon/holder/diona))
|
||||
var/obj/item/weapon/holder/diona/L = loc
|
||||
src.loc = L.loc
|
||||
del(L)
|
||||
qdel(L)
|
||||
|
||||
src.visible_message("\red [src] begins to shift and quiver, and erupts in a shower of shed bark as it splits into a tangle of nearly a dozen new dionaea.","\red You begin to shift and quiver, feeling your awareness splinter. All at once, we consume our stored nutrients to surge with growth, splitting into a tangle of at least a dozen new dionaea. We have attained our gestalt form.")
|
||||
return "Diona"
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
for(var/datum/language/L in languages)
|
||||
adult.add_language(L.name)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/mob/living/carbon/alien/proc/update_progression()
|
||||
if(amount_grown < max_grown)
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
living_mob_list += brainmob
|
||||
|
||||
user.drop_item()
|
||||
del(O)
|
||||
qdel(O)
|
||||
|
||||
name = "Man-Machine Interface: [brainmob.real_name]"
|
||||
icon_state = "mmi_full"
|
||||
@@ -114,6 +114,15 @@
|
||||
locked = 1
|
||||
return
|
||||
|
||||
/obj/item/device/mmi/Destroy()
|
||||
if(isrobot(loc))
|
||||
var/mob/living/silicon/robot/borg = loc
|
||||
borg.mmi = null
|
||||
if(brainmob)
|
||||
qdel(brainmob)
|
||||
brainmob = null
|
||||
..()
|
||||
|
||||
/obj/item/device/mmi/radio_enabled
|
||||
name = "radio-enabled man-machine interface"
|
||||
desc = "The Warrior's bland acronym, MMI, obscures the true horror of this monstrosity. This one comes with a built-in radio."
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
R.my_atom = src
|
||||
..()
|
||||
|
||||
Del()
|
||||
Destroy()
|
||||
if(key) //If there is a mob connected to this thing. Have to check key twice to avoid false death reporting.
|
||||
if(stat!=DEAD) //If not dead.
|
||||
death(1) //Brains can die again. AND THEY SHOULD AHA HA HA HA HA HA
|
||||
|
||||
@@ -27,6 +27,12 @@
|
||||
if(brainmob && brainmob.client)
|
||||
brainmob.client.screen.len = null //clear the hud
|
||||
|
||||
/obj/item/organ/brain/Destroy()
|
||||
if(brainmob)
|
||||
qdel(brainmob)
|
||||
brainmob = null
|
||||
..()
|
||||
|
||||
/obj/item/organ/brain/proc/transfer_identity(var/mob/living/carbon/H)
|
||||
name = "\the [H]'s [initial(src.name)]"
|
||||
brainmob = new(src)
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
|
||||
/mob/living/carbon/brain/gib()
|
||||
if(istype(container, /obj/item/device/mmi))
|
||||
del(container)//Gets rid of the MMI if there is one
|
||||
qdel(container)//Gets rid of the MMI if there is one
|
||||
if(loc)
|
||||
if(istype(loc,/obj/item/organ/brain))
|
||||
del(loc)//Gets rid of the brain item
|
||||
qdel(loc)//Gets rid of the brain item
|
||||
..(null,1)
|
||||
@@ -7,6 +7,13 @@
|
||||
if(germ_level < GERM_LEVEL_AMBIENT && prob(30)) //if you're just standing there, you shouldn't get more germs beyond an ambient level
|
||||
germ_level++
|
||||
|
||||
/mob/living/carbon/Destroy()
|
||||
for(var/guts in internal_organs)
|
||||
qdel(guts)
|
||||
for(var/food in stomach_contents)
|
||||
qdel(food)
|
||||
return ..()
|
||||
|
||||
/mob/living/carbon/Move(NewLoc, direct)
|
||||
. = ..()
|
||||
if(.)
|
||||
|
||||
@@ -119,14 +119,14 @@
|
||||
m_type = 1
|
||||
if ("flap")
|
||||
if (!src.restrained())
|
||||
message = "<B>[src]</B> flaps his wings."
|
||||
message = "<B>[src]</B> flaps \his wings."
|
||||
m_type = 2
|
||||
if(miming)
|
||||
m_type = 1
|
||||
|
||||
if ("aflap")
|
||||
if (!src.restrained())
|
||||
message = "<B>[src]</B> flaps his wings ANGRILY!"
|
||||
message = "<B>[src]</B> flaps \his wings ANGRILY!"
|
||||
m_type = 2
|
||||
if(miming)
|
||||
m_type = 1
|
||||
@@ -618,4 +618,4 @@
|
||||
HTML += "<hr />"
|
||||
HTML +="<a href='?src=\ref[src];flavor_change=done'>\[Done\]</a>"
|
||||
HTML += "<tt>"
|
||||
src << browse(HTML, "window=flavor_changes;size=430x300")
|
||||
src << browse(HTML, "window=flavor_changes;size=430x300")
|
||||
|
||||
@@ -47,6 +47,11 @@
|
||||
dna.real_name = real_name
|
||||
make_blood()
|
||||
|
||||
/mob/living/carbon/human/Destroy()
|
||||
for(var/organ in organs)
|
||||
qdel(organ)
|
||||
return ..()
|
||||
|
||||
/mob/living/carbon/human/Stat()
|
||||
..()
|
||||
statpanel("Status")
|
||||
@@ -65,7 +70,7 @@
|
||||
|
||||
if (internal)
|
||||
if (!internal.air_contents)
|
||||
del(internal)
|
||||
qdel(internal)
|
||||
else
|
||||
stat("Internal Atmosphere Info", internal.name)
|
||||
stat("Tank Pressure", internal.air_contents.return_pressure())
|
||||
@@ -818,7 +823,7 @@
|
||||
for(var/x in all_hairs)
|
||||
var/datum/sprite_accessory/hair/H = new x // create new hair datum based on type x
|
||||
hairs.Add(H.name) // add hair name to hairs
|
||||
del(H) // delete the hair after it's all done
|
||||
qdel(H) // delete the hair after it's all done
|
||||
|
||||
var/new_style = input("Please select hair style", "Character Generation",h_style) as null|anything in hairs
|
||||
|
||||
@@ -833,7 +838,7 @@
|
||||
for(var/x in all_fhairs)
|
||||
var/datum/sprite_accessory/facial_hair/H = new x
|
||||
fhairs.Add(H.name)
|
||||
del(H)
|
||||
qdel(H)
|
||||
|
||||
new_style = input("Please select facial style", "Character Generation",f_style) as null|anything in fhairs
|
||||
|
||||
@@ -944,7 +949,7 @@
|
||||
if(H.brainmob.real_name == src.real_name)
|
||||
if(H.brainmob.mind)
|
||||
H.brainmob.mind.transfer_to(src)
|
||||
del(H)
|
||||
qdel(H)
|
||||
|
||||
for (var/datum/disease/virus in viruses)
|
||||
virus.cure()
|
||||
@@ -1017,7 +1022,7 @@
|
||||
.=..()
|
||||
if(clean_feet && !shoes && istype(feet_blood_DNA, /list) && feet_blood_DNA.len)
|
||||
feet_blood_color = null
|
||||
del(feet_blood_DNA)
|
||||
qdel(feet_blood_DNA)
|
||||
update_inv_shoes(1)
|
||||
return 1
|
||||
|
||||
@@ -1143,7 +1148,7 @@
|
||||
if(client && client.screen)
|
||||
client.screen.len = null
|
||||
if(hud_used)
|
||||
del(hud_used)
|
||||
qdel(hud_used)
|
||||
hud_used = new /datum/hud(src)
|
||||
|
||||
if(species)
|
||||
@@ -1358,4 +1363,4 @@
|
||||
/mob/living/carbon/human/drop_from_inventory(var/obj/item/W, var/atom/Target = null)
|
||||
if(W in organs)
|
||||
return
|
||||
..()
|
||||
..()
|
||||
|
||||
@@ -337,12 +337,12 @@
|
||||
visible_message("<span class='danger'>[user] has broken [src]'s grip on [lgrab.affecting]!</span>")
|
||||
success = 1
|
||||
spawn(1)
|
||||
del(lgrab)
|
||||
qdel(lgrab)
|
||||
if(istype(r_hand, /obj/item/weapon/grab))
|
||||
var/obj/item/weapon/grab/rgrab = r_hand
|
||||
if(rgrab.affecting)
|
||||
visible_message("<span class='danger'>[user] has broken [src]'s grip on [rgrab.affecting]!</span>")
|
||||
success = 1
|
||||
spawn(1)
|
||||
del(rgrab)
|
||||
qdel(rgrab)
|
||||
return success
|
||||
|
||||
@@ -319,7 +319,7 @@ In most cases it makes more sense to use apply_damage() instead! And make sure t
|
||||
This function restores the subjects blood to max.
|
||||
*/
|
||||
/mob/living/carbon/human/proc/restore_blood()
|
||||
if(!species.flags & NO_BLOOD)
|
||||
if(!(species.flags & NO_BLOOD))
|
||||
var/blood_volume = vessel.get_reagent_amount("blood")
|
||||
vessel.add_reagent("blood",560.0-blood_volume)
|
||||
|
||||
|
||||
@@ -129,7 +129,7 @@
|
||||
spark_system.attach(src)
|
||||
spark_system.start()
|
||||
spawn(10)
|
||||
del(spark_system)
|
||||
qdel(spark_system)
|
||||
|
||||
//Handles chem traces
|
||||
/mob/living/carbon/human/proc/handle_trace_chems()
|
||||
|
||||
@@ -218,4 +218,41 @@
|
||||
log_say("PsychicWhisper: [key_name(src)]->[M.key] : [msg]")
|
||||
M << "\green You hear a strange, alien voice in your head... \italic [msg]"
|
||||
src << "\green You said: \"[msg]\" to [M]"
|
||||
return
|
||||
return
|
||||
|
||||
/mob/living/carbon/human/proc/diona_split_nymph()
|
||||
set name = "Split"
|
||||
set desc = "Split your humanoid form into its constituent nymphs."
|
||||
set category = "Abilities"
|
||||
|
||||
var/turf/T = get_turf(src)
|
||||
|
||||
var/mob/living/carbon/alien/diona/S = new(T)
|
||||
S.set_dir(dir)
|
||||
if(mind)
|
||||
mind.transfer_to(S)
|
||||
|
||||
message_admins("\The [src] has split into nymphs; player now controls [key_name_admin(S)]")
|
||||
log_admin("\The [src] has split into nymphs; player now controls [key_name(S)]")
|
||||
|
||||
var/nymphs = 1
|
||||
|
||||
for(var/mob/living/carbon/alien/diona/D in src)
|
||||
nymphs++
|
||||
D.loc = T
|
||||
D.set_dir(pick(NORTH, SOUTH, EAST, WEST))
|
||||
|
||||
if(nymphs < 5)
|
||||
for(var/i in nymphs to 4)
|
||||
var/mob/M = new /mob/living/carbon/alien/diona(T)
|
||||
M.set_dir(pick(NORTH, SOUTH, EAST, WEST))
|
||||
|
||||
|
||||
for(var/obj/item/W in src)
|
||||
drop_from_inventory(W)
|
||||
|
||||
visible_message("<span class='warning'>\The [src] quivers slightly, then splits apart with a wet slithering noise.</span>")
|
||||
|
||||
del(src)
|
||||
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ This saves us from having to call add_fingerprint() any time something is put in
|
||||
if (equip_to_slot_if_possible(W, slots[slot], del_on_fail = 0))
|
||||
return slot
|
||||
if (del_on_fail)
|
||||
del(W)
|
||||
qdel(W)
|
||||
return null
|
||||
|
||||
|
||||
@@ -341,9 +341,9 @@ This saves us from having to call add_fingerprint() any time something is put in
|
||||
|
||||
/obj/effect/equip_e/New()
|
||||
if (!ticker)
|
||||
del(src)
|
||||
qdel(src)
|
||||
spawn(100)
|
||||
del(src)
|
||||
qdel(src)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -354,22 +354,22 @@ This saves us from having to call add_fingerprint() any time something is put in
|
||||
switch(place)
|
||||
if("mask")
|
||||
if (!( target.wear_mask ))
|
||||
del(src)
|
||||
qdel(src)
|
||||
if("l_hand")
|
||||
if (!( target.l_hand ))
|
||||
del(src)
|
||||
qdel(src)
|
||||
if("r_hand")
|
||||
if (!( target.r_hand ))
|
||||
del(src)
|
||||
qdel(src)
|
||||
if("suit")
|
||||
if (!( target.wear_suit ))
|
||||
del(src)
|
||||
qdel(src)
|
||||
if("uniform")
|
||||
if (!( target.w_uniform ))
|
||||
del(src)
|
||||
qdel(src)
|
||||
if("back")
|
||||
if (!( target.back ))
|
||||
del(src)
|
||||
qdel(src)
|
||||
if("syringe")
|
||||
return
|
||||
if("pill")
|
||||
@@ -382,10 +382,10 @@ This saves us from having to call add_fingerprint() any time something is put in
|
||||
return
|
||||
if("handcuff")
|
||||
if (!( target.handcuffed ))
|
||||
del(src)
|
||||
qdel(src)
|
||||
if("id")
|
||||
if ((!( target.wear_id ) || !( target.w_uniform )))
|
||||
del(src)
|
||||
qdel(src)
|
||||
if("splints")
|
||||
var/count = 0
|
||||
for(var/organ in list("l_leg","r_leg","l_arm","r_arm"))
|
||||
@@ -394,19 +394,19 @@ This saves us from having to call add_fingerprint() any time something is put in
|
||||
count = 1
|
||||
break
|
||||
if(count == 0)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
if("sensor")
|
||||
if (! target.w_uniform )
|
||||
del(src)
|
||||
qdel(src)
|
||||
if("internal")
|
||||
if ((!( (istype(target.wear_mask, /obj/item/clothing/mask) && (istype(target.back, /obj/item/weapon/tank) || istype(target.belt, /obj/item/weapon/tank) || istype(target.s_store, /obj/item/weapon/tank)) && !( target.internal )) ) && !( target.internal )))
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
var/list/L = list( "syringe", "pill", "drink", "dnainjector", "fuel", "sensor", "internal", "tie")
|
||||
if ((item && !( L.Find(place) )))
|
||||
if(isrobot(source) && place != "handcuff")
|
||||
del(src)
|
||||
qdel(src)
|
||||
for(var/mob/O in viewers(target, null))
|
||||
O.show_message("\red <B>[source] is trying to put \a [item] on [target]</B>", 1)
|
||||
else
|
||||
@@ -508,7 +508,7 @@ This saves us from having to call add_fingerprint() any time something is put in
|
||||
message = "\red <B>[source] is trying to empty [target]'s pockets.</B>"
|
||||
if("CPR")
|
||||
if (!target.cpr_time)
|
||||
del(src)
|
||||
qdel(src)
|
||||
target.cpr_time = 0
|
||||
message = "\red <B>[source] is trying perform CPR on [target]!</B>"
|
||||
if("internal")
|
||||
@@ -607,13 +607,13 @@ It can still be worn/put on as normal.
|
||||
strip_item = target.shoes
|
||||
if("l_hand")
|
||||
if (istype(target, /obj/item/clothing/suit/straight_jacket))
|
||||
del(src)
|
||||
qdel(src)
|
||||
slot_to_process = slot_l_hand
|
||||
if (target.l_hand)
|
||||
strip_item = target.l_hand
|
||||
if("r_hand")
|
||||
if (istype(target, /obj/item/clothing/suit/straight_jacket))
|
||||
del(src)
|
||||
qdel(src)
|
||||
slot_to_process = slot_r_hand
|
||||
if (target.r_hand)
|
||||
strip_item = target.r_hand
|
||||
@@ -700,11 +700,11 @@ It can still be worn/put on as normal.
|
||||
S.add_fingerprint(source)
|
||||
if (!( istype(S, /obj/item/weapon/dnainjector) ))
|
||||
S.inuse = 0
|
||||
del(src)
|
||||
qdel(src)
|
||||
S.inject(target, source)
|
||||
if (S.s_time >= world.time + 30)
|
||||
S.inuse = 0
|
||||
del(src)
|
||||
qdel(src)
|
||||
S.s_time = world.time
|
||||
for(var/mob/O in viewers(source, null))
|
||||
O.show_message("\red [source] injects [target] with the DNA Injector!", 1)
|
||||
@@ -763,4 +763,4 @@ It can still be worn/put on as normal.
|
||||
if(source && target)
|
||||
if(source.machine == target)
|
||||
target.show_inv(source)
|
||||
del(src)
|
||||
qdel(src)
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
//NOTE: Breathing happens once per FOUR TICKS, unless the last breath fails. In which case it happens once per ONE TICK! So oxyloss healing is done once per 4 ticks while oxyloss damage is applied once per tick!
|
||||
#define HUMAN_MAX_OXYLOSS 1 //Defines how much oxyloss humans can get per tick. A tile with no air at all (such as space) applies this value, otherwise it's a percentage of it.
|
||||
#define HUMAN_CRIT_MAX_OXYLOSS ( (tickerProcess.getLastTickerTimeDuration()) / 6) //The amount of damage you'll get when in critical condition. We want this to be a 5 minute deal = 300s. There are 50HP to get through, so (1/6)*last_tick_duration per second. Breaths however only happen every 4 ticks.
|
||||
#define HUMAN_CRIT_MAX_OXYLOSS ( 2.0 / 6) //The amount of damage you'll get when in critical condition. We want this to be a 5 minute deal = 300s. There are 50HP to get through, so (1/6)*last_tick_duration per second. Breaths however only happen every 4 ticks. last_tick_duration = ~2.0 on average
|
||||
|
||||
#define HEAT_DAMAGE_LEVEL_1 2 //Amount of damage applied when your body temperature just passes the 360.15k safety point
|
||||
#define HEAT_DAMAGE_LEVEL_2 4 //Amount of damage applied when your body temperature passes the 400K point
|
||||
@@ -974,7 +974,7 @@
|
||||
|
||||
else
|
||||
for(var/atom/a in hallucinations)
|
||||
del a
|
||||
qdel(a)
|
||||
|
||||
if(halloss > 100)
|
||||
src << "<span class='notice'>You're in too much pain to keep going...</span>"
|
||||
@@ -1404,7 +1404,7 @@
|
||||
if(M.stat == 2)
|
||||
M.death(1)
|
||||
stomach_contents.Remove(M)
|
||||
del(M)
|
||||
qdel(M)
|
||||
continue
|
||||
if(air_master.current_cycle%3==1)
|
||||
if(!(M.status_flags & GODMODE))
|
||||
|
||||
@@ -23,4 +23,4 @@
|
||||
/datum/species/shadow/handle_death(var/mob/living/carbon/human/H)
|
||||
spawn(1)
|
||||
new /obj/effect/decal/cleanable/ash(H.loc)
|
||||
del(H)
|
||||
qdel(H)
|
||||
@@ -178,7 +178,7 @@
|
||||
|
||||
for(var/obj/item/organ/organ in H.contents)
|
||||
if((organ in H.organs) || (organ in H.internal_organs))
|
||||
del(organ)
|
||||
qdel(organ)
|
||||
|
||||
if(H.organs) H.organs.Cut()
|
||||
if(H.internal_organs) H.internal_organs.Cut()
|
||||
|
||||
@@ -168,6 +168,10 @@
|
||||
"r_foot" = list("path" = /obj/item/organ/external/diona/foot/right)
|
||||
)
|
||||
|
||||
inherent_verbs = list(
|
||||
/mob/living/carbon/human/proc/diona_split_nymph
|
||||
)
|
||||
|
||||
warning_low_pressure = 50
|
||||
hazard_low_pressure = -1
|
||||
|
||||
@@ -209,7 +213,7 @@
|
||||
if(D.client)
|
||||
D.loc = H.loc
|
||||
else
|
||||
del(D)
|
||||
qdel(D)
|
||||
|
||||
H.visible_message("\red[H] splits apart with a wet slithering noise!")
|
||||
|
||||
|
||||
@@ -16,9 +16,9 @@
|
||||
spawn(0)
|
||||
AddInfectionImages(affected_mob)
|
||||
else
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/alien_embryo/Del()
|
||||
/obj/item/alien_embryo/Destroy()
|
||||
if(affected_mob)
|
||||
affected_mob.status_flags &= ~(XENO_HOST)
|
||||
spawn(0)
|
||||
@@ -98,7 +98,7 @@
|
||||
new_xeno << sound('sound/voice/hiss5.ogg',0,0,0,100) //To get the player's attention
|
||||
if(gib_on_success)
|
||||
affected_mob.gib()
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/*----------------------------------------
|
||||
Proc: RefreshInfectionImage()
|
||||
@@ -114,7 +114,7 @@ Des: Removes all infection images from aliens and places an infection image on a
|
||||
if(alien.client)
|
||||
for(var/image/I in alien.client.images)
|
||||
if(dd_hasprefix_case(I.icon_state, "infected"))
|
||||
del(I)
|
||||
qdel(I)
|
||||
for(var/mob/living/L in mob_list)
|
||||
if(iscorgi(L) || iscarbon(L))
|
||||
if(L.status_flags & XENO_HOST)
|
||||
@@ -156,4 +156,4 @@ Des: Removes the alien infection image from all aliens in the world located in p
|
||||
for(var/image/I in alien.client.images)
|
||||
if(I.loc == C)
|
||||
if(dd_hasprefix_case(I.icon_state, "infected"))
|
||||
del(I)
|
||||
qdel(I)
|
||||
@@ -41,7 +41,7 @@ var/const/MAX_ACTIVE_TIME = 400
|
||||
if(config.aliens_allowed)
|
||||
..()
|
||||
else
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/clothing/mask/facehugger/examine(mob/user)
|
||||
..(user)
|
||||
|
||||
@@ -45,7 +45,7 @@ Des: Removes all infected images from the alien.
|
||||
if (client)
|
||||
for(var/image/I in client.images)
|
||||
if(dd_hasprefix_case(I.icon_state, "infected"))
|
||||
del(I)
|
||||
qdel(I)
|
||||
return
|
||||
|
||||
/* TODO: Convert this over.
|
||||
|
||||
@@ -239,7 +239,7 @@ var/global/list/damage_icon_parts = list()
|
||||
//0 = destroyed, 1 = normal, 2 = robotic, 3 = necrotic.
|
||||
//Create a new, blank icon for our mob to use.
|
||||
if(stand_icon)
|
||||
del(stand_icon)
|
||||
qdel(stand_icon)
|
||||
stand_icon = new(species.icon_template ? species.icon_template : 'icons/mob/human.dmi',"blank")
|
||||
var/icon_key = "[species.race_key][g][s_tone][r_skin][g_skin][b_skin]"
|
||||
var/obj/item/organ/eyes/eyes = internal_organs_by_name["eyes"]
|
||||
@@ -412,7 +412,7 @@ var/global/list/damage_icon_parts = list()
|
||||
if (targeted_by && target_locked)
|
||||
overlays_standing[TARGETED_LAYER] = target_locked
|
||||
else if (!targeted_by && target_locked)
|
||||
del(target_locked)
|
||||
qdel(target_locked)
|
||||
if (!targeted_by)
|
||||
overlays_standing[TARGETED_LAYER] = null
|
||||
if(update_icons) update_icons()
|
||||
|
||||
@@ -143,7 +143,7 @@
|
||||
//now mobs
|
||||
var/speech_bubble_test = say_test(message)
|
||||
var/image/speech_bubble = image('icons/mob/talk.dmi',src,"h[speech_bubble_test]")
|
||||
spawn(30) del(speech_bubble)
|
||||
spawn(30) qdel(speech_bubble)
|
||||
|
||||
for(var/mob/M in listening)
|
||||
M << speech_bubble
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
user <<"You apply the enhancer. It now has triple the amount of uses."
|
||||
Uses = 3
|
||||
enhanced = 1
|
||||
del(O)
|
||||
qdel(O)
|
||||
|
||||
/obj/item/slime_extract/New()
|
||||
..()
|
||||
@@ -145,14 +145,14 @@
|
||||
pet.icon_dead = "[M.colour] baby slime dead"
|
||||
pet.colour = "[M.colour]"
|
||||
user <<"You feed the slime the potion, removing it's powers and calming it."
|
||||
del(M)
|
||||
qdel(M)
|
||||
var/newname = sanitize(input(user, "Would you like to give the slime a name?", "Name your new pet", "pet slime") as null|text, MAX_NAME_LEN)
|
||||
|
||||
if (!newname)
|
||||
newname = "pet slime"
|
||||
pet.name = newname
|
||||
pet.real_name = newname
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/slimepotion2
|
||||
name = "advanced docility potion"
|
||||
@@ -176,14 +176,14 @@
|
||||
pet.icon_dead = "[M.colour] baby slime dead"
|
||||
pet.colour = "[M.colour]"
|
||||
user <<"You feed the slime the potion, removing it's powers and calming it."
|
||||
del(M)
|
||||
qdel(M)
|
||||
var/newname = sanitize(input(user, "Would you like to give the slime a name?", "Name your new pet", "pet slime") as null|text, MAX_NAME_LEN)
|
||||
|
||||
if (!newname)
|
||||
newname = "pet slime"
|
||||
pet.name = newname
|
||||
pet.real_name = newname
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
|
||||
/obj/item/weapon/slimesteroid
|
||||
@@ -208,7 +208,7 @@
|
||||
|
||||
user <<"You feed the slime the steroid. It now has triple the amount of extract."
|
||||
M.cores = 3
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/slimesteroid2
|
||||
name = "extract enhancer"
|
||||
@@ -227,7 +227,7 @@
|
||||
user <<"You apply the enhancer. It now has triple the amount of uses."
|
||||
target.Uses = 3
|
||||
target.enahnced = 1
|
||||
del(src)*/
|
||||
qdel(src)*/
|
||||
|
||||
/obj/effect/golemrune
|
||||
anchored = 1
|
||||
@@ -268,7 +268,7 @@
|
||||
G.set_species("Golem")
|
||||
G.key = ghost.key
|
||||
G << "You are an adamantine golem. You move slowly, but are highly resistant to heat and cold as well as blunt trauma. You are unable to wear clothes, but can still use most tools. Serve [user], and assist them in completing their goals at any cost."
|
||||
del (src)
|
||||
qdel(src)
|
||||
|
||||
|
||||
proc/announce_to_ghosts()
|
||||
@@ -350,7 +350,7 @@
|
||||
spawn(rand(50,100))
|
||||
src.visible_message("<span class='warning'> The [name] bursts open!</span>")
|
||||
new/mob/living/carbon/slime(T)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/slime/process()
|
||||
|
||||
@@ -178,7 +178,7 @@
|
||||
var/f_loss = null
|
||||
switch (severity)
|
||||
if (1.0)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
if (2.0)
|
||||
|
||||
@@ -161,7 +161,7 @@
|
||||
src.mind.transfer_to(new_slime)
|
||||
else
|
||||
new_slime.key = src.key
|
||||
del(src)
|
||||
qdel(src)
|
||||
else
|
||||
src << "<span class='notice'>I am not ready to reproduce yet...</span>"
|
||||
else
|
||||
|
||||
@@ -512,7 +512,7 @@ default behaviour is:
|
||||
for(var/mob/O in viewers(M, null))
|
||||
O.show_message(text("\red [] has been pulled from []'s grip by []", G.affecting, G.assailant, src), 1)
|
||||
//G = null
|
||||
del(G)
|
||||
qdel(G)
|
||||
else
|
||||
ok = 0
|
||||
if (locate(/obj/item/weapon/grab, M.grabbed_by.len))
|
||||
@@ -629,22 +629,22 @@ default behaviour is:
|
||||
var/resisting = 0
|
||||
for(var/obj/O in L.requests)
|
||||
L.requests.Remove(O)
|
||||
del(O)
|
||||
qdel(O)
|
||||
resisting++
|
||||
for(var/obj/item/weapon/grab/G in usr.grabbed_by)
|
||||
resisting++
|
||||
switch(G.state)
|
||||
if(GRAB_PASSIVE)
|
||||
del(G)
|
||||
qdel(G)
|
||||
if(GRAB_AGGRESSIVE)
|
||||
if(prob(60)) //same chance of breaking the grab as disarm
|
||||
L.visible_message("<span class='warning'>[L] has broken free of [G.assailant]'s grip!</span>")
|
||||
del(G)
|
||||
qdel(G)
|
||||
if(GRAB_NECK)
|
||||
//If the you move when grabbing someone then it's easier for them to break free. Same if the affected mob is immune to stun.
|
||||
if (((world.time - G.assailant.l_move_time < 30 || !L.stunned) && prob(15)) || prob(3))
|
||||
L.visible_message("<span class='warning'>[L] has broken free of [G.assailant]'s headlock!</span>")
|
||||
del(G)
|
||||
qdel(G)
|
||||
if(resisting)
|
||||
L.visible_message("<span class='danger'>[L] resists!</span>")
|
||||
|
||||
@@ -778,7 +778,7 @@ default behaviour is:
|
||||
O.show_message(text("\red <B>[] manages to break the handcuffs!</B>", CM), 1)
|
||||
CM << "\red You successfully break your handcuffs."
|
||||
CM.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
|
||||
del(CM.handcuffed)
|
||||
qdel(CM.handcuffed)
|
||||
CM.handcuffed = null
|
||||
if(buckled && buckled.buckle_require_restraints)
|
||||
buckled.unbuckle_mob()
|
||||
@@ -826,7 +826,7 @@ default behaviour is:
|
||||
O.show_message(text("\red <B>[] manages to break the legcuffs!</B>", CM), 1)
|
||||
CM << "\red You successfully break your legcuffs."
|
||||
CM.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
|
||||
del(CM.legcuffed)
|
||||
qdel(CM.legcuffed)
|
||||
CM.legcuffed = null
|
||||
CM.update_inv_legcuffed()
|
||||
else
|
||||
|
||||
@@ -52,6 +52,7 @@
|
||||
if(istype(get_active_hand(),/obj/item/device/assembly/signaler))
|
||||
var/obj/item/device/assembly/signaler/signaler = get_active_hand()
|
||||
if(signaler.deadman && prob(80))
|
||||
log_and_message_admins("has triggered a signaler deadman's switch")
|
||||
src.visible_message("\red [src] triggers their deadman's switch!")
|
||||
signaler.signal()
|
||||
|
||||
@@ -59,7 +60,7 @@
|
||||
if(P.taser_effect)
|
||||
stun_effect_act(0, P.agony, def_zone, P)
|
||||
src <<"\red You have been hit by [P]!"
|
||||
del P
|
||||
qdel(P)
|
||||
return
|
||||
|
||||
//Armor
|
||||
|
||||
@@ -263,7 +263,7 @@ proc/get_radio_key_from_channel(var/channel)
|
||||
|
||||
var/speech_bubble_test = say_test(message)
|
||||
var/image/speech_bubble = image('icons/mob/talk.dmi',src,"h[speech_bubble_test]")
|
||||
spawn(30) del(speech_bubble)
|
||||
spawn(30) qdel(speech_bubble)
|
||||
|
||||
for(var/mob/M in listening)
|
||||
M << speech_bubble
|
||||
|
||||
@@ -143,7 +143,7 @@ var/list/ai_verbs_default = list(
|
||||
if(!safety)//Only used by AIize() to successfully spawn an AI.
|
||||
if (!B)//If there is no player/brain inside.
|
||||
empty_playable_ai_cores += new/obj/structure/AIcore/deactivated(loc)//New empty terminal.
|
||||
del(src)//Delete AI.
|
||||
qdel(src)//Delete AI.
|
||||
return
|
||||
else
|
||||
if (B.brainmob.mind)
|
||||
@@ -193,9 +193,9 @@ var/list/ai_verbs_default = list(
|
||||
|
||||
job = "AI"
|
||||
|
||||
/mob/living/silicon/ai/Del()
|
||||
/mob/living/silicon/ai/Destroy()
|
||||
ai_list -= src
|
||||
del(eyeobj)
|
||||
qdel(eyeobj)
|
||||
..()
|
||||
|
||||
/mob/living/silicon/ai/pointed(atom/A as mob|obj|turf in view())
|
||||
@@ -241,7 +241,7 @@ var/list/ai_verbs_default = list(
|
||||
/obj/machinery/ai_powersupply/New(var/mob/living/silicon/ai/ai=null)
|
||||
powered_ai = ai
|
||||
if(isnull(powered_ai))
|
||||
Del()
|
||||
qdel(src)
|
||||
|
||||
loc = powered_ai.loc
|
||||
use_power(1) // Just incase we need to wake up the power system.
|
||||
@@ -250,7 +250,7 @@ var/list/ai_verbs_default = list(
|
||||
|
||||
/obj/machinery/ai_powersupply/process()
|
||||
if(!powered_ai || powered_ai.stat & DEAD)
|
||||
Del()
|
||||
qdel(src)
|
||||
if(!powered_ai.anchored)
|
||||
loc = powered_ai.loc
|
||||
use_power = 0
|
||||
@@ -576,7 +576,7 @@ var/list/ai_verbs_default = list(
|
||||
input = input("Select a crew member:") as null|anything in personnel_list
|
||||
var/icon/character_icon = personnel_list[input]
|
||||
if(character_icon)
|
||||
del(holo_icon)//Clear old icon so we're not storing it in memory.
|
||||
qdel(holo_icon)//Clear old icon so we're not storing it in memory.
|
||||
holo_icon = getHologramIcon(icon(character_icon))
|
||||
else
|
||||
alert("No suitable records found. Aborting.")
|
||||
@@ -589,7 +589,7 @@ var/list/ai_verbs_default = list(
|
||||
)
|
||||
input = input("Please select a hologram:") as null|anything in icon_list
|
||||
if(input)
|
||||
del(holo_icon)
|
||||
qdel(holo_icon)
|
||||
switch(input)
|
||||
if("default")
|
||||
holo_icon = getHologramIcon(icon('icons/mob/AI.dmi',"holo1"))
|
||||
|
||||
@@ -34,10 +34,10 @@ var/global/list/empty_playable_ai_cores = list()
|
||||
job_master.FreeRole(job)
|
||||
|
||||
if(mind.objectives.len)
|
||||
del(mind.objectives)
|
||||
qdel(mind.objectives)
|
||||
mind.special_role = null
|
||||
|
||||
clear_antag_roles(mind)
|
||||
|
||||
ghostize(0)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
card.removePersonality()
|
||||
if(gibbed)
|
||||
src.loc = get_turf(card)
|
||||
del(card)
|
||||
qdel(card)
|
||||
else
|
||||
close_up()
|
||||
if(mind)
|
||||
del(mind)
|
||||
qdel(mind)
|
||||
..(gibbed)
|
||||
ghostize()
|
||||
del(src)
|
||||
qdel(src)
|
||||
@@ -8,7 +8,7 @@
|
||||
var/turf/T = get_turf_or_move(src.loc)
|
||||
for (var/mob/M in viewers(T))
|
||||
M.show_message("\red The data cable rapidly retracts back into its spool.", 3, "\red You hear a click and the sound of wire spooling rapidly.", 2)
|
||||
del(src.cable)
|
||||
qdel(src.cable)
|
||||
|
||||
regular_hud_updates()
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
var/obj/item/robot_parts/robot_component/comp = wrapped
|
||||
brokenstate = comp.icon_state_broken
|
||||
if(wrapped)
|
||||
del wrapped
|
||||
qdel(wrapped)
|
||||
|
||||
|
||||
wrapped = new/obj/item/broken_device
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/mob/living/silicon/robot/dust()
|
||||
//Delete the MMI first so that it won't go popping out.
|
||||
if(mmi)
|
||||
del(mmi)
|
||||
qdel(mmi)
|
||||
..()
|
||||
|
||||
/mob/living/silicon/robot/death(gibbed)
|
||||
|
||||
@@ -256,7 +256,7 @@
|
||||
if(istype(M,/mob/living/simple_animal/lizard) || istype(M,/mob/living/simple_animal/mouse))
|
||||
src.loc.visible_message("<span class='danger'>[src.loc] sucks [M] into its decompiler. There's a horrible crunching noise.</span>","<span class='danger'>It's a bit of a struggle, but you manage to suck [M] into your decompiler. It makes a series of visceral crunching noises.</span>")
|
||||
new/obj/effect/decal/cleanable/blood/splatter(get_turf(src))
|
||||
del(M)
|
||||
qdel(M)
|
||||
if(wood)
|
||||
wood.add_charge(2000)
|
||||
if(plastic)
|
||||
@@ -279,7 +279,7 @@
|
||||
if(!M || !D) return
|
||||
|
||||
D << "<span class='danger'>You carefully and thoroughly decompile [M], storing as much of its resources as you can within yourself.</span>"
|
||||
del(M)
|
||||
qdel(M)
|
||||
new/obj/effect/decal/cleanable/blood/oil(get_turf(src))
|
||||
|
||||
if(metal)
|
||||
@@ -347,7 +347,7 @@
|
||||
else
|
||||
continue
|
||||
|
||||
del(W)
|
||||
qdel(W)
|
||||
grabbed_something = 1
|
||||
|
||||
if(grabbed_something)
|
||||
|
||||
@@ -226,12 +226,19 @@
|
||||
|
||||
//If there's an MMI in the robot, have it ejected when the mob goes away. --NEO
|
||||
//Improved /N
|
||||
/mob/living/silicon/robot/Del()
|
||||
if(mmi)//Safety for when a cyborg gets dust()ed. Or there is no MMI inside.
|
||||
/mob/living/silicon/robot/Destroy()
|
||||
if(mmi && mind)//Safety for when a cyborg gets dust()ed. Or there is no MMI inside.
|
||||
var/turf/T = get_turf(loc)//To hopefully prevent run time errors.
|
||||
if(T) mmi.loc = T
|
||||
if(mind) mind.transfer_to(mmi.brainmob)
|
||||
if(mmi.brainmob)
|
||||
mind.transfer_to(mmi.brainmob)
|
||||
else
|
||||
src << "<span class='danger'>Oops! Something went very wrong, your MMI was unable to receive your mind. You have been ghosted. Please make a bug report so we can fix this bug.</span>"
|
||||
ghostize()
|
||||
//ERROR("A borg has been destroyed, but its MMI lacked a brainmob, so the mind could not be transferred. Player: [ckey].")
|
||||
mmi = null
|
||||
if(connected_ai)
|
||||
connected_ai.connected_robots -= src
|
||||
..()
|
||||
|
||||
/mob/living/silicon/robot/proc/set_module_sprites(var/list/new_sprites)
|
||||
@@ -547,7 +554,7 @@
|
||||
C.r_arm = new/obj/item/robot_parts/r_arm(C)
|
||||
C.updateicon()
|
||||
new/obj/item/robot_parts/chest(loc)
|
||||
src.Del()
|
||||
qdel(src)
|
||||
else
|
||||
// Okay we're not removing the cell or an MMI, but maybe something else?
|
||||
var/list/removable_components = list()
|
||||
@@ -811,7 +818,7 @@
|
||||
//Call when target overlay should be added/removed
|
||||
/mob/living/silicon/robot/update_targeted()
|
||||
if(!targeted_by && target_locked)
|
||||
del(target_locked)
|
||||
qdel(target_locked)
|
||||
updateicon()
|
||||
if (targeted_by && target_locked)
|
||||
overlays += target_locked
|
||||
@@ -945,7 +952,7 @@
|
||||
for(var/A in tile)
|
||||
if(istype(A, /obj/effect))
|
||||
if(istype(A, /obj/effect/rune) || istype(A, /obj/effect/decal/cleanable) || istype(A, /obj/effect/overlay))
|
||||
del(A)
|
||||
qdel(A)
|
||||
else if(istype(A, /obj/item))
|
||||
var/obj/item/cleaned_item = A
|
||||
cleaned_item.clean_blood()
|
||||
|
||||
@@ -43,11 +43,11 @@
|
||||
S.use(1)
|
||||
loaded_item = S
|
||||
else
|
||||
del(S)
|
||||
qdel(S)
|
||||
desc = initial(desc)
|
||||
icon_state = initial(icon_state)
|
||||
else
|
||||
del(I)
|
||||
qdel(I)
|
||||
desc = initial(desc)
|
||||
icon_state = initial(icon_state)
|
||||
else
|
||||
|
||||
@@ -56,6 +56,17 @@ var/global/list/robot_modules = list(
|
||||
remove_subsystems(R)
|
||||
remove_status_flags(R)
|
||||
|
||||
/obj/item/weapon/robot_module/Destroy()
|
||||
qdel(modules)
|
||||
qdel(synths)
|
||||
qdel(emag)
|
||||
qdel(jetpack)
|
||||
modules = null
|
||||
synths = null
|
||||
emag = null
|
||||
jetpack = null
|
||||
..()
|
||||
|
||||
/obj/item/weapon/robot_module/emp_act(severity)
|
||||
if(modules)
|
||||
for(var/obj/O in modules)
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
add_language("Galactic Common")
|
||||
init_subsystems()
|
||||
|
||||
/mob/living/silicon/Del()
|
||||
/mob/living/silicon/Destroy()
|
||||
for(var/datum/alarm_handler/AH in alarm_manager.all_handlers)
|
||||
AH.unregister(src)
|
||||
..()
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
/mob/living/silicon/ai
|
||||
alarm_monitor_type = /obj/nano_module/alarm_monitor/ai
|
||||
list/silicon_subsystems = list(
|
||||
silicon_subsystems = list(
|
||||
/mob/living/silicon/proc/subsystem_alarm_monitor,
|
||||
/mob/living/silicon/proc/subsystem_atmos_control,
|
||||
/mob/living/silicon/proc/subsystem_crew_monitor,
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
..()
|
||||
parent = new_parent
|
||||
|
||||
/mob/living/simple_animal/bee/Del()
|
||||
/mob/living/simple_animal/bee/Destroy()
|
||||
if(parent)
|
||||
parent.owned_bee_swarms.Remove(src)
|
||||
..()
|
||||
@@ -107,7 +107,7 @@
|
||||
|
||||
if(feral > 0)
|
||||
src.strength += B.strength
|
||||
del(B)
|
||||
qdel(B)
|
||||
src.icon_state = "bees[src.strength]"
|
||||
if(strength > 5)
|
||||
icon_state = "bees_swarm"
|
||||
@@ -120,7 +120,7 @@
|
||||
|
||||
B.icon_state = "bees[B.strength]"
|
||||
if(src.strength <= 0)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
src.icon_state = "bees[B.strength]"
|
||||
var/turf/simulated/floor/T = get_turf(get_step(src, pick(1,2,4,8)))
|
||||
@@ -169,7 +169,7 @@
|
||||
if(!parent && prob(10))
|
||||
strength -= 1
|
||||
if(strength <= 0)
|
||||
del(src)
|
||||
qdel(src)
|
||||
else if(strength <= 5)
|
||||
icon_state = "bees[strength]"
|
||||
|
||||
|
||||
@@ -143,7 +143,7 @@
|
||||
if(!host.lastKnownIP)
|
||||
host.lastKnownIP = b2h_ip
|
||||
|
||||
del(host_brain)
|
||||
qdel(host_brain)
|
||||
|
||||
/mob/living/simple_animal/borer/proc/leave_host()
|
||||
|
||||
|
||||
@@ -304,7 +304,7 @@
|
||||
host.computer_id = null
|
||||
host.lastKnownIP = null
|
||||
|
||||
del(host_brain)
|
||||
qdel(host_brain)
|
||||
host_brain = new(src)
|
||||
|
||||
host_brain.ckey = host.ckey
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
new /obj/item/weapon/ectoplasm (src.loc)
|
||||
..(null,"collapses in a shattered heap.")
|
||||
ghostize()
|
||||
del src
|
||||
qdel(src)
|
||||
|
||||
/mob/living/simple_animal/construct/attack_generic(var/mob/user)
|
||||
if(istype(user, /mob/living/simple_animal/construct/builder))
|
||||
|
||||
@@ -131,7 +131,7 @@
|
||||
animation.icon = 'icons/mob/mob.dmi'
|
||||
animation.master = T
|
||||
flick("dust-h", animation)
|
||||
del(animation)
|
||||
qdel(animation)
|
||||
var/mob/living/simple_animal/shade/S = new /mob/living/simple_animal/shade( T.loc )
|
||||
S.loc = C //put shade in stone
|
||||
S.status_flags |= GODMODE //So they won't die inside the stone somehow
|
||||
@@ -152,7 +152,7 @@
|
||||
U << "\blue <b>Capture successful!</b>: \black [T.real_name]'s soul has been ripped from their body and stored within the soul stone."
|
||||
U << "The soulstone has been imprinted with [S.real_name]'s mind, it will no longer react to other souls."
|
||||
C.imprinted = "[S.name]"
|
||||
del T
|
||||
qdel(T)
|
||||
if("SHADE")
|
||||
var/mob/living/simple_animal/shade/T = target
|
||||
var/obj/item/device/soulstone/C = src
|
||||
@@ -184,33 +184,33 @@
|
||||
Z.key = A.key
|
||||
if(iscultist(U))
|
||||
cult.add_antagonist(Z.mind)
|
||||
del(T)
|
||||
qdel(T)
|
||||
Z << "<B>You are playing a Juggernaut. Though slow, you can withstand extreme punishment, and rip apart enemies and walls alike.</B>"
|
||||
Z << "<B>You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.</B>"
|
||||
Z.cancel_camera()
|
||||
del(C)
|
||||
qdel(C)
|
||||
|
||||
if("Wraith")
|
||||
var/mob/living/simple_animal/construct/wraith/Z = new /mob/living/simple_animal/construct/wraith (get_turf(T.loc))
|
||||
Z.key = A.key
|
||||
if(iscultist(U))
|
||||
cult.add_antagonist(Z.mind)
|
||||
del(T)
|
||||
qdel(T)
|
||||
Z << "<B>You are playing a Wraith. Though relatively fragile, you are fast, deadly, and even able to phase through walls.</B>"
|
||||
Z << "<B>You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.</B>"
|
||||
Z.cancel_camera()
|
||||
del(C)
|
||||
qdel(C)
|
||||
|
||||
if("Artificer")
|
||||
var/mob/living/simple_animal/construct/builder/Z = new /mob/living/simple_animal/construct/builder (get_turf(T.loc))
|
||||
Z.key = A.key
|
||||
if(iscultist(U))
|
||||
cult.add_antagonist(Z.mind)
|
||||
del(T)
|
||||
qdel(T)
|
||||
Z << "<B>You are playing an Artificer. You are incredibly weak and fragile, but you are able to construct fortifications, repair allied constructs (by clicking on them), and even create new constructs</B>"
|
||||
Z << "<B>You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.</B>"
|
||||
Z.cancel_camera()
|
||||
del(C)
|
||||
qdel(C)
|
||||
else
|
||||
U << "\red <b>Creation failed!</b>: \black The soul stone is empty! Go kill someone!"
|
||||
return
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
W.assignment = corpseidjob
|
||||
W.registered_name = M.real_name
|
||||
M.equip_to_slot_or_del(W, slot_wear_id)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
health = min(maxHealth, health + MED.heal_brute)
|
||||
MED.amount -= 1
|
||||
if(MED.amount <= 0)
|
||||
del(MED)
|
||||
qdel(MED)
|
||||
for(var/mob/M in viewers(src, null))
|
||||
if ((M.client && !( M.blinded )))
|
||||
M.show_message("\blue [user] applies the [MED] on [src]")
|
||||
|
||||
@@ -177,7 +177,7 @@
|
||||
amount_grown += rand(1,2)
|
||||
if(amount_grown >= 100)
|
||||
new /mob/living/simple_animal/chicken(src.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
var/const/MAX_CHICKENS = 50
|
||||
var/global/chicken_count = 0
|
||||
@@ -228,7 +228,7 @@ var/global/chicken_count = 0
|
||||
if(!stat && eggsleft < 8)
|
||||
user.visible_message("\blue [user] feeds [O] to [name]! It clucks happily.","\blue You feed [O] to [name]! It clucks happily.")
|
||||
user.drop_item()
|
||||
del(O)
|
||||
qdel(O)
|
||||
eggsleft += rand(1, 4)
|
||||
else
|
||||
user << "\blue [name] doesn't seem hungry!"
|
||||
@@ -258,6 +258,6 @@ var/global/chicken_count = 0
|
||||
visible_message("[src] hatches with a quiet cracking sound.")
|
||||
new /mob/living/simple_animal/chick(get_turf(src))
|
||||
processing_objects.Remove(src)
|
||||
del(src)
|
||||
qdel(src)
|
||||
else
|
||||
processing_objects.Remove(src)
|
||||
|
||||
@@ -45,4 +45,4 @@
|
||||
S2.icon_living = "[src.colour] baby slime"
|
||||
S2.icon_dead = "[src.colour] baby slime dead"
|
||||
S2.colour = "[src.colour]"
|
||||
del(src)
|
||||
qdel(src)
|
||||
@@ -185,7 +185,7 @@
|
||||
src.name = "Spider-bot"
|
||||
update_icon()
|
||||
|
||||
/mob/living/simple_animal/spiderbot/Del()
|
||||
/mob/living/simple_animal/spiderbot/Destroy()
|
||||
eject_brain()
|
||||
..()
|
||||
|
||||
@@ -210,7 +210,7 @@
|
||||
held_item = null
|
||||
|
||||
gibs(loc, viruses, null, null, /obj/effect/gibspawner/robot) //TODO: use gib() or refactor spiderbots into synthetics.
|
||||
src.Del()
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
//Cannibalized from the parrot mob. ~Zuhayr
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(3, 1, src)
|
||||
s.start()
|
||||
del src
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot/tele//this still needs work
|
||||
@@ -95,7 +95,7 @@
|
||||
if("rapid")
|
||||
new /mob/living/simple_animal/hostile/hivebot/rapid(get_turf(src))
|
||||
spawn(100)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -188,7 +188,7 @@
|
||||
if(!A) return
|
||||
|
||||
if (!istype(target, /turf))
|
||||
del(A)
|
||||
qdel(A)
|
||||
return
|
||||
A.current = target
|
||||
A.starting = get_turf(src)
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
|
||||
/mob/living/simple_animal/hostile/mimic/death()
|
||||
..()
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
//
|
||||
// Crate Mimic
|
||||
|
||||
@@ -53,5 +53,5 @@
|
||||
new corpse (src.loc)
|
||||
if(weapon1)
|
||||
new weapon1 (src.loc)
|
||||
del src
|
||||
qdel(src)
|
||||
return
|
||||
@@ -159,9 +159,9 @@
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/malf_drone/death()
|
||||
..(null,"suddenly breaks apart.")
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/malf_drone/Del()
|
||||
/mob/living/simple_animal/hostile/retaliate/malf_drone/Destroy()
|
||||
//some random debris left behind
|
||||
if(has_loot)
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
|
||||
@@ -51,5 +51,5 @@
|
||||
new corpse (src.loc)
|
||||
if(weapon1)
|
||||
new weapon1 (src.loc)
|
||||
del src
|
||||
qdel(src)
|
||||
return
|
||||
@@ -43,7 +43,7 @@
|
||||
new weapon1 (src.loc)
|
||||
if(weapon2)
|
||||
new weapon2 (src.loc)
|
||||
del src
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
///////////////Sword and shield////////////
|
||||
@@ -159,4 +159,4 @@
|
||||
|
||||
/mob/living/simple_animal/hostile/viscerator/death()
|
||||
..(null,"is smashed into pieces!")
|
||||
del src
|
||||
qdel(src)
|
||||
|
||||
@@ -53,4 +53,4 @@
|
||||
/mob/living/simple_animal/hostile/tree/death()
|
||||
..(null,"is hacked into pieces!")
|
||||
new /obj/item/stack/sheet/wood(loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
@@ -47,5 +47,5 @@
|
||||
if((M.client && !( M.blinded )))
|
||||
M.show_message("\red [src] lets out a contented sigh as their form unwinds. ")
|
||||
ghostize()
|
||||
del src
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
@@ -274,7 +274,7 @@
|
||||
adjustBruteLoss(-MED.heal_brute)
|
||||
MED.amount -= 1
|
||||
if(MED.amount <= 0)
|
||||
del(MED)
|
||||
qdel(MED)
|
||||
for(var/mob/M in viewers(src, null))
|
||||
if ((M.client && !( M.blinded )))
|
||||
M.show_message("<span class='notice>[user] applies the [MED] on [src].</span>")
|
||||
@@ -361,7 +361,7 @@
|
||||
//Call when target overlay should be added/removed
|
||||
/mob/living/simple_animal/update_targeted()
|
||||
if(!targeted_by && target_locked)
|
||||
del(target_locked)
|
||||
qdel(target_locked)
|
||||
overlays = null
|
||||
if (targeted_by && target_locked)
|
||||
overlays += target_locked
|
||||
@@ -392,7 +392,7 @@
|
||||
if(small)
|
||||
user.visible_message("<span class='danger'>[user] chops up \the [src]!</span>")
|
||||
new/obj/effect/decal/cleanable/blood/splatter(get_turf(src))
|
||||
del(src)
|
||||
qdel(src)
|
||||
else
|
||||
user.visible_message("<span class='danger'>[user] butchers \the [src] messily!</span>")
|
||||
gib()
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
|
||||
return
|
||||
|
||||
Del() //if a chunk a destroyed, make a new worm out of the split halves
|
||||
Destroy() //if a chunk a destroyed, make a new worm out of the split halves
|
||||
if(previous)
|
||||
previous.Detach()
|
||||
..()
|
||||
@@ -170,7 +170,7 @@
|
||||
if(die)
|
||||
newHead.death()
|
||||
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
proc/ProcessStomach()
|
||||
for(var/atom/movable/stomachContent in contents)
|
||||
@@ -179,16 +179,16 @@
|
||||
if(!istype(stomachContent,/obj/item/stack/sheet/mineral/phoron))
|
||||
var/obj/item/stack/oldStack = stomachContent
|
||||
new /obj/item/stack/sheet/mineral/phoron(src, oldStack.get_amount())
|
||||
del(oldStack)
|
||||
qdel(oldStack)
|
||||
continue
|
||||
else if(istype(stomachContent,/obj/item)) //converts to plasma, keeping the w_class
|
||||
var/obj/item/oldItem = stomachContent
|
||||
new /obj/item/stack/sheet/mineral/phoron(src, oldItem.w_class)
|
||||
del(oldItem)
|
||||
qdel(oldItem)
|
||||
continue
|
||||
else
|
||||
new /obj/item/stack/sheet/mineral/phoron(src, flatPlasmaValue) //just flat amount
|
||||
del(stomachContent)
|
||||
qdel(stomachContent)
|
||||
continue
|
||||
|
||||
if(previous)
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
client.images = null //remove the images such as AIs being unable to see runes
|
||||
client.screen = null //remove hud items just in case
|
||||
if(hud_used) del(hud_used) //remove the hud objects
|
||||
if(hud_used) qdel(hud_used) //remove the hud objects
|
||||
hud_used = new /datum/hud(src)
|
||||
|
||||
next_move = 1
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
/mob/Del()//This makes sure that mobs with clients/keys are not just deleted from the game.
|
||||
/mob/Destroy()//This makes sure that mobs with clients/keys are not just deleted from the game.
|
||||
mob_list -= src
|
||||
dead_mob_list -= src
|
||||
living_mob_list -= src
|
||||
qdel(hud_used)
|
||||
if(mind && mind.current == src)
|
||||
spellremove(src)
|
||||
for(var/infection in viruses)
|
||||
qdel(infection)
|
||||
ghostize()
|
||||
..()
|
||||
|
||||
@@ -179,7 +184,7 @@
|
||||
P.invisibility = invisibility
|
||||
spawn (20)
|
||||
if(P)
|
||||
del(P) // qdel
|
||||
qdel(P) // qdel
|
||||
|
||||
face_atom(A)
|
||||
return 1
|
||||
@@ -213,7 +218,7 @@
|
||||
var/list/temp = list( )
|
||||
temp += L.container
|
||||
//L = null
|
||||
del(L)
|
||||
qdel(L)
|
||||
return temp
|
||||
else
|
||||
return L.container
|
||||
@@ -304,7 +309,7 @@
|
||||
if(lentext(msg) <= 40)
|
||||
return "\blue [msg]"
|
||||
else
|
||||
return "\blue [copytext(msg, 1, 37)]... <a href='byond://?src=\ref[src];flavor_more=1'>More...</a>"
|
||||
return "\blue [copytext_preserve_html(msg, 1, 37)]... <a href='byond://?src=\ref[src];flavor_more=1'>More...</a>"
|
||||
|
||||
/*
|
||||
/mob/verb/help()
|
||||
@@ -367,7 +372,7 @@
|
||||
var/mob/new_player/M = new /mob/new_player()
|
||||
if(!client)
|
||||
log_game("[usr.key] AM failed due to disconnect.")
|
||||
del(M)
|
||||
qdel(M)
|
||||
return
|
||||
|
||||
M.key = key
|
||||
@@ -433,7 +438,7 @@
|
||||
namecounts[name] = 1
|
||||
creatures[name] = O
|
||||
|
||||
if(istype(O, /obj/machinery/singularity))
|
||||
if(istype(O, /obj/singularity))
|
||||
var/name = "Singularity"
|
||||
if (names.Find(name))
|
||||
namecounts[name]++
|
||||
@@ -715,63 +720,19 @@ note dizziness decrements automatically in the mob's Life() proc.
|
||||
//reset the pixel offsets to zero
|
||||
is_floating = 0
|
||||
|
||||
/proc/getStatName(var/datum/controller/process/process)
|
||||
return uppertext(copytext(process.name, 1, 4))
|
||||
|
||||
/mob/Stat()
|
||||
..()
|
||||
|
||||
if(client && client.holder)
|
||||
if(statpanel("Status"))
|
||||
stat(null,"Location:\t([x], [y], [z])")
|
||||
stat(null,"CPU:\t[world.cpu]")
|
||||
stat(null,"Instances:\t[world.contents.len]")
|
||||
statpanel("Status","Location:","([x], [y], [z])")
|
||||
statpanel("Status","CPU:","[world.cpu]")
|
||||
statpanel("Status","Instances:","[world.contents.len]")
|
||||
if(statpanel("Status") && processScheduler && processScheduler.getIsRunning())
|
||||
var/datum/controller/process/process
|
||||
|
||||
process = processScheduler.getProcess("air")
|
||||
stat(null, "[getStatName(process)]\t - #[process.getTicks()]\t - [process.getLastRunTime()]")
|
||||
|
||||
process = processScheduler.getProcess("alarm")
|
||||
var/list/alarms = alarm_manager.active_alarms()
|
||||
stat(null, "[getStatName(process)]([alarms.len])\t - #[process.getTicks()]\t - [process.getLastRunTime()]")
|
||||
|
||||
process = processScheduler.getProcess("disease")
|
||||
stat(null, "[getStatName(process)]([active_diseases.len])\t - #[process.getTicks()]\t - [process.getLastRunTime()]")
|
||||
|
||||
process = processScheduler.getProcess("garbage")
|
||||
stat(null, "[getStatName(process)]([garbage_collector.destroyed.len])\t - #[process.getTicks()]\t - [process.getLastRunTime()]")
|
||||
|
||||
process = processScheduler.getProcess("machinery")
|
||||
stat(null, "[getStatName(process)]([machines.len])\t - #[process.getTicks()]\t - [process.getLastRunTime()]")
|
||||
|
||||
process = processScheduler.getProcess("mob")
|
||||
stat(null, "[getStatName(process)]([mob_list.len])\t - #[process.getTicks()]\t - [process.getLastRunTime()]")
|
||||
|
||||
process = processScheduler.getProcess("nanoui")
|
||||
stat(null, "[getStatName(process)]([nanomanager.processing_uis.len])\t - #[process.getTicks()]\t - [process.getLastRunTime()]")
|
||||
|
||||
process = processScheduler.getProcess("lighting")
|
||||
stat(null, "[getStatName(process)]\t - #[process.getTicks()]\t - [process.getLastRunTime()]")
|
||||
|
||||
process = processScheduler.getProcess("obj")
|
||||
stat(null, "[getStatName(process)]([processing_objects.len])\t - #[process.getTicks()]\t - [process.getLastRunTime()]")
|
||||
|
||||
process = processScheduler.getProcess("pipenet")
|
||||
stat(null, "[getStatName(process)]([pipe_networks.len])\t - #[process.getTicks()]\t - [process.getLastRunTime()]")
|
||||
|
||||
process = processScheduler.getProcess("powernet")
|
||||
stat(null, "[getStatName(process)]([powernets.len])\t - #[process.getTicks()]\t - [process.getLastRunTime()]")
|
||||
|
||||
process = processScheduler.getProcess("sun")
|
||||
stat(null, "[getStatName(process)]\t - #[process.getTicks()]\t - [process.getLastRunTime()]")
|
||||
|
||||
process = processScheduler.getProcess("ticker")
|
||||
stat(null, "[getStatName(process)]\t - #[process.getTicks()]\t - [process.getLastRunTime()]")
|
||||
|
||||
for(var/datum/controller/process/P in processScheduler.processes)
|
||||
statpanel("Status",P.getStatName(), P.getTickTime())
|
||||
else
|
||||
stat(null, "processScheduler is not running.")
|
||||
|
||||
statpanel("Status","processScheduler is not running.")
|
||||
|
||||
if(listed_turf && client)
|
||||
if(!TurfAdjacent(listed_turf))
|
||||
@@ -779,6 +740,8 @@ note dizziness decrements automatically in the mob's Life() proc.
|
||||
else
|
||||
statpanel(listed_turf.name, null, listed_turf)
|
||||
for(var/atom/A in listed_turf)
|
||||
if(!A.mouse_opacity)
|
||||
continue
|
||||
if(A.invisibility > see_invisible)
|
||||
continue
|
||||
if(is_type_in_list(A, shouldnt_see))
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
affecting = victim
|
||||
|
||||
if(affecting.anchored)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
affecting.grabbed_by += src
|
||||
@@ -35,9 +35,16 @@
|
||||
hud.name = "reinforce grab"
|
||||
hud.master = src
|
||||
|
||||
/obj/item/weapon/grab/Del()
|
||||
/obj/item/weapon/grab/Destroy()
|
||||
//make sure the grabbed_by list doesn't fill up with nulls
|
||||
if(affecting) affecting.grabbed_by -= src
|
||||
if(affecting)
|
||||
affecting.grabbed_by -= src
|
||||
affecting = null
|
||||
if(assailant)
|
||||
if(assailant.client)
|
||||
assailant.client.screen -= hud
|
||||
assailant = null
|
||||
qdel(hud)
|
||||
..()
|
||||
|
||||
//Used by throw code to hand over the mob, instead of throwing the grab. The grab is then deleted by the throw code.
|
||||
@@ -118,7 +125,7 @@
|
||||
if(world.time < (last_upgrade + UPGRADE_COOLDOWN))
|
||||
return
|
||||
if(!assailant.canmove || assailant.lying)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
last_upgrade = world.time
|
||||
@@ -152,10 +159,10 @@
|
||||
if(state == GRAB_KILL)
|
||||
return
|
||||
if(!affecting)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
if(!assailant.canmove || assailant.lying)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
state = GRAB_KILL
|
||||
assailant.visible_message("<span class='danger'>[assailant] has tightened \his grip on [affecting]'s neck!</span>")
|
||||
@@ -174,12 +181,12 @@
|
||||
//This is used to make sure the victim hasn't managed to yackety sax away before using the grab.
|
||||
/obj/item/weapon/grab/proc/confirm()
|
||||
if(!assailant || !affecting)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return 0
|
||||
|
||||
if(affecting)
|
||||
if(!isturf(assailant.loc) || ( !isturf(affecting.loc) || assailant.loc != affecting.loc && get_dist(assailant, affecting) > 1) )
|
||||
del(src)
|
||||
qdel(src)
|
||||
return 0
|
||||
|
||||
return 1
|
||||
@@ -216,12 +223,12 @@
|
||||
user.visible_message("<span class='danger'>[user] devours [affecting]!</span>")
|
||||
affecting.loc = user
|
||||
attacker.stomach_contents.Add(affecting)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
|
||||
/obj/item/weapon/grab/dropped()
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/grab/Del()
|
||||
del(hud)
|
||||
/obj/item/weapon/grab/Destroy()
|
||||
qdel(hud)
|
||||
..()
|
||||
|
||||
@@ -615,3 +615,7 @@ proc/is_blind(A)
|
||||
|
||||
eyeobj.setLoc(C)
|
||||
return 1
|
||||
|
||||
// Returns true if the mob has a client which has been active in the last given X minutes.
|
||||
/mob/proc/is_client_active(var/active = 1)
|
||||
return client && client.inactivity < active MINUTES
|
||||
|
||||
@@ -188,7 +188,7 @@
|
||||
if(S.victim == mob)
|
||||
return
|
||||
|
||||
if(mob.stat==2)
|
||||
if(mob.stat==DEAD && isliving(mob))
|
||||
mob.ghostize()
|
||||
return
|
||||
|
||||
|
||||
@@ -1,58 +1,58 @@
|
||||
|
||||
//This proc is the most basic of the procs. All it does is make a new mob on the same tile and transfer over a few variables.
|
||||
//Returns the new mob
|
||||
//Note that this proc does NOT do MMI related stuff!
|
||||
/mob/proc/change_mob_type(var/new_type = null, var/turf/location = null, var/new_name = null as text, var/delete_old_mob = 0 as num, var/subspecies)
|
||||
|
||||
if(istype(src,/mob/new_player))
|
||||
usr << "\red cannot convert players who have not entered yet."
|
||||
return
|
||||
|
||||
if(!new_type)
|
||||
new_type = input("Mob type path:", "Mob type") as text|null
|
||||
|
||||
if(istext(new_type))
|
||||
new_type = text2path(new_type)
|
||||
|
||||
if( !ispath(new_type) )
|
||||
usr << "Invalid type path (new_type = [new_type]) in change_mob_type(). Contact a coder."
|
||||
return
|
||||
|
||||
if( new_type == /mob/new_player )
|
||||
usr << "\red cannot convert into a new_player mob type."
|
||||
return
|
||||
|
||||
var/mob/M
|
||||
if(isturf(location))
|
||||
M = new new_type( location )
|
||||
else
|
||||
M = new new_type( src.loc )
|
||||
|
||||
if(!M || !ismob(M))
|
||||
usr << "Type path is not a mob (new_type = [new_type]) in change_mob_type(). Contact a coder."
|
||||
del(M)
|
||||
return
|
||||
|
||||
if( istext(new_name) )
|
||||
M.name = new_name
|
||||
M.real_name = new_name
|
||||
else
|
||||
M.name = src.name
|
||||
M.real_name = src.real_name
|
||||
|
||||
if(src.dna)
|
||||
M.dna = src.dna.Clone()
|
||||
|
||||
if(mind)
|
||||
mind.transfer_to(M)
|
||||
else
|
||||
M.key = key
|
||||
|
||||
if(subspecies && istype(M,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = M
|
||||
H.set_species(subspecies)
|
||||
|
||||
if(delete_old_mob)
|
||||
spawn(1)
|
||||
del(src)
|
||||
return M
|
||||
|
||||
//This proc is the most basic of the procs. All it does is make a new mob on the same tile and transfer over a few variables.
|
||||
//Returns the new mob
|
||||
//Note that this proc does NOT do MMI related stuff!
|
||||
/mob/proc/change_mob_type(var/new_type = null, var/turf/location = null, var/new_name = null as text, var/delete_old_mob = 0 as num, var/subspecies)
|
||||
|
||||
if(istype(src,/mob/new_player))
|
||||
usr << "\red cannot convert players who have not entered yet."
|
||||
return
|
||||
|
||||
if(!new_type)
|
||||
new_type = input("Mob type path:", "Mob type") as text|null
|
||||
|
||||
if(istext(new_type))
|
||||
new_type = text2path(new_type)
|
||||
|
||||
if( !ispath(new_type) )
|
||||
usr << "Invalid type path (new_type = [new_type]) in change_mob_type(). Contact a coder."
|
||||
return
|
||||
|
||||
if( new_type == /mob/new_player )
|
||||
usr << "\red cannot convert into a new_player mob type."
|
||||
return
|
||||
|
||||
var/mob/M
|
||||
if(isturf(location))
|
||||
M = new new_type( location )
|
||||
else
|
||||
M = new new_type( src.loc )
|
||||
|
||||
if(!M || !ismob(M))
|
||||
usr << "Type path is not a mob (new_type = [new_type]) in change_mob_type(). Contact a coder."
|
||||
qdel(M)
|
||||
return
|
||||
|
||||
if( istext(new_name) )
|
||||
M.name = new_name
|
||||
M.real_name = new_name
|
||||
else
|
||||
M.name = src.name
|
||||
M.real_name = src.real_name
|
||||
|
||||
if(src.dna)
|
||||
M.dna = src.dna.Clone()
|
||||
|
||||
if(mind)
|
||||
mind.transfer_to(M)
|
||||
else
|
||||
M.key = key
|
||||
|
||||
if(subspecies && istype(M,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = M
|
||||
H.set_species(subspecies)
|
||||
|
||||
if(delete_old_mob)
|
||||
spawn(1)
|
||||
qdel(src)
|
||||
return M
|
||||
|
||||
@@ -3,5 +3,5 @@
|
||||
..()
|
||||
if(!spawning)//Here so that if they are spawning and log out, the other procs can play out and they will have a mob to come back to.
|
||||
key = null//We null their key before deleting the mob, so they are properly kicked out.
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
@@ -135,7 +135,7 @@
|
||||
if(!client.holder && !config.antag_hud_allowed) // For new ghosts we remove the verb from even showing up if it's not allowed.
|
||||
observer.verbs -= /mob/dead/observer/verb/toggle_antagHUD // Poor guys, don't know what they are missing!
|
||||
observer.key = key
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
return 1
|
||||
|
||||
@@ -327,8 +327,8 @@
|
||||
AnnounceCyborg(character, rank, "has been downloaded to the empty core in \the [character.loc.loc]")
|
||||
ticker.mode.latespawn(character)
|
||||
|
||||
del(C)
|
||||
del(src)
|
||||
qdel(C)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
//Find our spawning point.
|
||||
@@ -368,7 +368,7 @@
|
||||
else
|
||||
AnnounceCyborg(character, rank, join_message)
|
||||
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
proc/AnnounceArrival(var/mob/living/carbon/human/character, var/rank, var/join_message)
|
||||
if (ticker.current_state == GAME_STATE_PLAYING)
|
||||
|
||||
@@ -179,9 +179,9 @@ datum/preferences
|
||||
|
||||
|
||||
proc/update_preview_icon() //seriously. This is horrendous.
|
||||
del(preview_icon_front)
|
||||
del(preview_icon_side)
|
||||
del(preview_icon)
|
||||
qdel(preview_icon_front)
|
||||
qdel(preview_icon_side)
|
||||
qdel(preview_icon)
|
||||
|
||||
var/g = "m"
|
||||
if(gender == FEMALE) g = "f"
|
||||
@@ -690,7 +690,7 @@ datum/preferences
|
||||
preview_icon_front = new(preview_icon, dir = SOUTH)
|
||||
preview_icon_side = new(preview_icon, dir = WEST)
|
||||
|
||||
del(eyes_s)
|
||||
del(underwear_s)
|
||||
del(undershirt_s)
|
||||
del(clothes_s)
|
||||
qdel(eyes_s)
|
||||
qdel(underwear_s)
|
||||
qdel(undershirt_s)
|
||||
qdel(clothes_s)
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
icon = null
|
||||
invisibility = 101
|
||||
for(var/t in organs)
|
||||
del(t)
|
||||
qdel(t)
|
||||
var/atom/movable/overlay/animation = new /atom/movable/overlay( loc )
|
||||
animation.icon_state = "blank"
|
||||
animation.icon = 'icons/mob/mob.dmi'
|
||||
@@ -37,7 +37,7 @@
|
||||
dna.SetSEValueRange(MONKEYBLOCK,0xDAC, 0xFFF)
|
||||
|
||||
src << "<B>You are now [species.name]. </B>"
|
||||
del(animation)
|
||||
qdel(animation)
|
||||
|
||||
return src
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
if (monkeyizing)
|
||||
return
|
||||
for(var/t in organs)
|
||||
del(t)
|
||||
qdel(t)
|
||||
|
||||
return ..(move)
|
||||
|
||||
@@ -106,8 +106,7 @@
|
||||
O.add_ai_verbs()
|
||||
|
||||
O.rename_self("ai",1)
|
||||
spawn(0)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return O
|
||||
|
||||
//human -> robot
|
||||
@@ -122,7 +121,7 @@
|
||||
icon = null
|
||||
invisibility = 101
|
||||
for(var/t in organs)
|
||||
del(t)
|
||||
qdel(t)
|
||||
|
||||
var/mob/living/silicon/robot/O = new /mob/living/silicon/robot( loc )
|
||||
|
||||
@@ -159,8 +158,7 @@
|
||||
callHook("borgify", list(O))
|
||||
O.Namepick()
|
||||
|
||||
spawn(0)//To prevent the proc from returning null.
|
||||
del(src)
|
||||
qdel(src)
|
||||
return O
|
||||
|
||||
//human -> alien
|
||||
@@ -175,7 +173,7 @@
|
||||
icon = null
|
||||
invisibility = 101
|
||||
for(var/t in organs)
|
||||
del(t)
|
||||
qdel(t)
|
||||
|
||||
var/alien_caste = pick("Hunter","Sentinel","Drone")
|
||||
var/mob/living/carbon/human/new_xeno = create_new_xenomorph(alien_caste,loc)
|
||||
@@ -184,8 +182,7 @@
|
||||
new_xeno.key = key
|
||||
|
||||
new_xeno << "<B>You are now an alien.</B>"
|
||||
spawn(0)//To prevent the proc from returning null.
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/mob/living/carbon/human/proc/slimeize(adult as num, reproduce as num)
|
||||
@@ -199,7 +196,7 @@
|
||||
icon = null
|
||||
invisibility = 101
|
||||
for(var/t in organs)
|
||||
del(t)
|
||||
qdel(t)
|
||||
|
||||
var/mob/living/carbon/slime/new_slime
|
||||
if(reproduce)
|
||||
@@ -219,8 +216,7 @@
|
||||
new_slime.key = key
|
||||
|
||||
new_slime << "<B>You are now a slime. Skreee!</B>"
|
||||
spawn(0)//To prevent the proc from returning null.
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/mob/living/carbon/human/proc/corgize()
|
||||
@@ -234,15 +230,14 @@
|
||||
icon = null
|
||||
invisibility = 101
|
||||
for(var/t in organs) //this really should not be necessary
|
||||
del(t)
|
||||
qdel(t)
|
||||
|
||||
var/mob/living/simple_animal/corgi/new_corgi = new /mob/living/simple_animal/corgi (loc)
|
||||
new_corgi.a_intent = I_HURT
|
||||
new_corgi.key = key
|
||||
|
||||
new_corgi << "<B>You are now a Corgi. Yap Yap!</B>"
|
||||
spawn(0)//To prevent the proc from returning null.
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/mob/living/carbon/human/Animalize()
|
||||
@@ -266,7 +261,7 @@
|
||||
invisibility = 101
|
||||
|
||||
for(var/t in organs)
|
||||
del(t)
|
||||
qdel(t)
|
||||
|
||||
var/mob/new_mob = new mobpath(src.loc)
|
||||
|
||||
@@ -276,7 +271,7 @@
|
||||
|
||||
new_mob << "You suddenly feel more... animalistic."
|
||||
spawn()
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/mob/proc/Animalize()
|
||||
@@ -294,7 +289,7 @@
|
||||
new_mob.a_intent = I_HURT
|
||||
new_mob << "You feel more... animalistic"
|
||||
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/* Certain mob types have problems and should not be allowed to be controlled by players.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user