TG sync Sunday (#201)

* stage one

* datums and shit

* game stuff

* modules

* tgstation.dme

* tools

* these things for icons

* compiling fixes

* merge spree on TG

* other updates

* updated maps with deepfryers

* My helpers were not helping
This commit is contained in:
Poojawa
2017-02-06 00:36:56 -06:00
committed by GitHub
parent aeeca195c7
commit 73b6b33f79
279 changed files with 3548 additions and 2585 deletions
+1 -1
View File
@@ -73,7 +73,7 @@ var/global/posibrain_notif_cooldown = 0
return
var/posi_ask = alert("Become a [name]? (Warning, You can no longer be cloned, and all past lives will be forgotten!)","Are you positive?","Yes","No")
if(posi_ask == "No" || qdeleted(src))
if(posi_ask == "No" || QDELETED(src))
return
transfer_personality(user)
+1 -36
View File
@@ -42,13 +42,13 @@
create_internal_organs()
AddAbility(new/obj/effect/proc_holder/alien/nightvisiontoggle(null))
..()
/mob/living/carbon/alien/create_internal_organs()
internal_organs += new /obj/item/organ/brain/alien
internal_organs += new /obj/item/organ/alien/hivenode
internal_organs += new /obj/item/organ/tongue/alien
internal_organs += new /obj/item/organ/eyes/night_vision/alien
..()
/mob/living/carbon/alien/assess_threat() // beepsky won't hunt aliums
@@ -152,40 +152,5 @@ Des: Removes all infected images from the alien.
#undef HEAT_DAMAGE_LEVEL_2
#undef HEAT_DAMAGE_LEVEL_3
/mob/living/carbon/alien/update_sight()
if(!client)
return
if(stat == DEAD)
sight |= SEE_TURFS
sight |= SEE_MOBS
sight |= SEE_OBJS
see_in_dark = 8
see_invisible = SEE_INVISIBLE_OBSERVER
return
sight = SEE_MOBS
if(nightvision)
see_in_dark = 8
see_invisible = SEE_INVISIBLE_MINIMUM
else
see_in_dark = 4
see_invisible = SEE_INVISIBLE_LIVING
if(client.eye != src)
var/atom/A = client.eye
if(A.update_remote_sight(src)) //returns 1 if we override all other sight updates.
return
for(var/obj/item/organ/cyberimp/eyes/E in internal_organs)
sight |= E.sight_flags
if(E.dark_view)
see_in_dark = max(see_in_dark, E.dark_view)
if(E.see_invisible)
see_invisible = min(see_invisible, E.see_invisible)
if(see_override)
see_invisible = see_override
/mob/living/carbon/alien/can_hold_items()
return has_fine_manipulation
@@ -286,26 +286,6 @@ Doesn't work on other aliens/AI.*/
user.visible_message("<span class='alertealien'>[user] hurls out the contents of their stomach!</span>")
return
/obj/effect/proc_holder/alien/nightvisiontoggle
name = "Toggle Night Vision"
desc = "Toggles Night Vision"
plasma_cost = 0
has_action = 0 // Has dedicated GUI button already
/obj/effect/proc_holder/alien/nightvisiontoggle/fire(mob/living/carbon/alien/user)
if(!user.nightvision)
user.see_in_dark = 8
user.see_invisible = SEE_INVISIBLE_MINIMUM
user.nightvision = 1
user.hud_used.nightvisionicon.icon_state = "nightvision1"
else if(user.nightvision == 1)
user.see_in_dark = 4
user.see_invisible = 45
user.nightvision = 0
user.hud_used.nightvisionicon.icon_state = "nightvision0"
return 1
/obj/effect/proc_holder/alien/sneak
name = "Sneak"
desc = "Blend into the shadows to stalk your prey."
@@ -141,7 +141,7 @@
recent_queen_death = 1
owner.throw_alert("alien_noqueen", /obj/screen/alert/alien_vulnerable)
spawn(2400) //four minutes
if(qdeleted(src)) //In case the node is deleted
if(QDELETED(src)) //In case the node is deleted
return
recent_queen_death = 0
if(!owner) //In case the xeno is butchered or subjected to surgery after death.
+29 -9
View File
@@ -529,21 +529,34 @@
see_invisible = SEE_INVISIBLE_OBSERVER
return
see_invisible = initial(see_invisible)
see_in_dark = initial(see_in_dark)
sight = initial(sight)
var/obj/item/organ/eyes/E = getorganslot("eye_sight")
if(!E)
update_tint()
else
see_invisible = E.see_invisible
see_in_dark = E.see_in_dark
sight |= E.sight_flags
if(client.eye != src)
var/atom/A = client.eye
if(A.update_remote_sight(src)) //returns 1 if we override all other sight updates.
return
for(var/obj/item/organ/cyberimp/eyes/E in internal_organs)
sight |= E.sight_flags
if(E.dark_view)
see_in_dark = max(see_in_dark,E.dark_view)
if(E.see_invisible)
see_invisible = min(see_invisible, E.see_invisible)
if(glasses)
var/obj/item/clothing/glasses/G = glasses
sight |= G.vision_flags
see_in_dark = max(G.darkness_view, see_in_dark)
if(G.invis_override)
see_invisible = G.invis_override
else
see_invisible = min(G.invis_view, see_invisible)
if(dna)
for(var/X in dna.mutations)
var/datum/mutation/M = X
if(M.name == XRAY)
sight |= (SEE_TURFS|SEE_MOBS|SEE_OBJS)
see_in_dark = max(see_in_dark, 8)
if(see_override)
see_invisible = see_override
@@ -569,6 +582,13 @@
if(wear_mask)
. += wear_mask.tint
var/obj/item/organ/eyes/E = getorganslot("eye_sight")
if(E)
. += E.tint
else
. += INFINITY
//this handles hud updates
/mob/living/carbon/update_damage_hud()
@@ -709,7 +729,7 @@
return 0
/mob/living/carbon/harvest(mob/living/user)
if(qdeleted(src))
if(QDELETED(src))
return
var/organs_amt = 0
for(var/X in internal_organs)
@@ -1,8 +1,12 @@
/mob/living/carbon/get_eye_protection()
var/number = ..()
for(var/obj/item/organ/cyberimp/eyes/EFP in internal_organs)
number += EFP.flash_protect
var/obj/item/organ/eyes/E = getorganslot("eye_sight")
if(!E)
number = INFINITY //Can't get flashed without eyes
else
number += E.flash_protect
return number
/mob/living/carbon/get_ear_protection()
+2 -11
View File
@@ -47,6 +47,8 @@
internal_organs += new /obj/item/organ/lungs()
if(!(NOBLOOD in dna.species.species_traits))
internal_organs += new /obj/item/organ/heart
internal_organs += new dna.species.mutanteyes()
internal_organs += new /obj/item/organ/brain
..()
@@ -764,17 +766,6 @@
if(R)
R.fields["name"] = newname
/mob/living/carbon/human/update_sight()
if(!client)
return
if(stat == DEAD)
sight = (SEE_TURFS|SEE_MOBS|SEE_OBJS)
see_in_dark = 8
see_invisible = SEE_INVISIBLE_OBSERVER
return
dna.species.update_sight(src)
/mob/living/carbon/human/get_total_tint()
. = ..()
if(glasses)
+12 -44
View File
@@ -15,8 +15,6 @@
var/name = null // this is the fluff name. these will be left generic (such as 'Lizardperson' for the lizard race) so servers can change them to whatever
var/roundstart = 0 // can this mob be chosen at roundstart? (assuming the config option is checked?)
var/default_color = "#FFF" // if alien colors are disabled, this is the color that will be used by that race
var/eyes = "eyes" // which eyes the race uses. at the moment, the only types of eyes are "eyes" (regular eyes) and "jelleyes" (three eyes)
var/sexes = 1 // whether or not the race has sexual characteristics. at the moment this is only 0 for skeletons and shadows
var/hair_color = null // this allows races to have specific hair colors... if null, it uses the H's hair/facial hair colors. if "mutcolor", it uses the H's mutant_color
var/hair_alpha = 255 // the alpha used by the hair. 255 is completely solid, 0 is transparent.
@@ -47,9 +45,6 @@
var/damage_overlay_type = "human" //what kind of damage overlays (if any) appear on our species when wounded?
var/fixed_mut_color = "" //to use MUTCOLOR with a fixed color that's independent of dna.feature["mcolor"]
var/invis_sight = SEE_INVISIBLE_LIVING
var/darksight = 2
// species flags. these can be found in flags.dm
var/list/species_traits = list()
@@ -65,6 +60,9 @@
//Flight and floating
var/override_float = 0
//Eyes
var/obj/item/organ/eyes/mutanteyes = /obj/item/organ/eyes
//Citadel snowflake
var/fixed_mut_color2 = ""
var/fixed_mut_color3 = ""
@@ -250,6 +248,13 @@
var/obj/item/bodypart/head/HD = H.get_bodypart("head")
// eyes
var/has_eyes = TRUE
if(!H.getorgan(/obj/item/organ/eyes) && HD)
standing += image("icon"='icons/mob/human_face.dmi', "icon_state" = "eyes_missing", "layer" = -BODY_LAYER)
has_eyes = FALSE
if(!(H.disabilities & HUSK))
// lipstick
if(H.lip_style && (LIPS in species_traits) && HD)
@@ -258,8 +263,8 @@
standing += lips
// eyes
if((EYECOLOR in species_traits) && HD)
var/image/img_eyes = image("icon" = 'icons/mob/human_face.dmi', "icon_state" = "[eyes]", "layer" = -BODY_LAYER)
if((EYECOLOR in species_traits) && HD && has_eyes)
var/image/img_eyes = image("icon" = 'icons/mob/human_face.dmi', "icon_state" = "eyes", "layer" = -BODY_LAYER)
img_eyes.color = "#" + H.eye_color
standing += img_eyes
@@ -867,7 +872,6 @@
hunger_rate = 3 * HUNGER_FACTOR
H.nutrition = max(0, H.nutrition - hunger_rate)
if (H.nutrition > NUTRITION_LEVEL_FULL)
if(H.overeatduration < 600) //capped so people don't take forever to unfat
H.overeatduration++
@@ -901,42 +905,6 @@
else
H.throw_alert("nutrition", /obj/screen/alert/starving)
/datum/species/proc/update_sight(mob/living/carbon/human/H)
H.sight = initial(H.sight)
H.see_in_dark = darksight
H.see_invisible = invis_sight
if(H.client.eye != H)
var/atom/A = H.client.eye
if(A.update_remote_sight(H)) //returns 1 if we override all other sight updates.
return
for(var/obj/item/organ/cyberimp/eyes/E in H.internal_organs)
H.sight |= E.sight_flags
if(E.dark_view)
H.see_in_dark = E.dark_view
if(E.see_invisible)
H.see_invisible = min(H.see_invisible, E.see_invisible)
if(H.glasses)
var/obj/item/clothing/glasses/G = H.glasses
H.sight |= G.vision_flags
H.see_in_dark = max(G.darkness_view, H.see_in_dark)
if(G.invis_override)
H.see_invisible = G.invis_override
else
H.see_invisible = min(G.invis_view, H.see_invisible)
for(var/X in H.dna.mutations)
var/datum/mutation/M = X
if(M.name == XRAY)
H.sight |= (SEE_TURFS|SEE_MOBS|SEE_OBJS)
H.see_in_dark = max(H.see_in_dark, 8)
if(H.see_override) //Override all
H.see_invisible = H.see_override
/datum/species/proc/update_health_hud(mob/living/carbon/human/H)
return 0
@@ -1,7 +1,6 @@
/datum/species/abductor
name = "Abductor"
id = "abductor"
darksight = 3
say_mod = "gibbers"
sexes = 0
species_traits = list(NOBLOOD,NOBREATH,VIRUSIMMUNE,NOGUNS)
@@ -116,6 +116,7 @@ datum/species/canid
//EXOTIC//
//These races will likely include lots of downsides and upsides. Keep them relatively balanced.//
/*
/datum/species/xeno
name = "Xenomorph"
id = "xeno"
@@ -170,7 +171,7 @@ datum/species/canid
toxpwr = 0
acidpwr = 12
/*
/datum/species/yautja
name = "Yautja"
id = "pred"
@@ -4,7 +4,6 @@
id = "jelly"
default_color = "00FF90"
say_mod = "chirps"
eyes = "jelleyes"
species_traits = list(MUTCOLORS,EYECOLOR,NOBLOOD,VIRUSIMMUNE,TOXINLOVER)
meat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/slime
exotic_blood = "slimejelly"
@@ -99,10 +98,8 @@
name = "Slimeperson"
id = "slime"
default_color = "00FFFF"
darksight = 3
species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD,VIRUSIMMUNE, TOXINLOVER)
say_mod = "says"
eyes = "eyes"
hair_color = "mutcolor"
hair_alpha = 150
ignored_by = list(/mob/living/simple_animal/slime)
@@ -131,8 +128,8 @@
/* slime_split = new
slime_split.Grant(C)
swap_body = new
swap_body.Grant(C) */
swap_body.Grant(C)
*/
if(!bodies || !bodies.len)
bodies = list(C)
else
@@ -248,10 +245,10 @@
var/list/data = list()
data["bodies"] = list()
for(var/b in SS.bodies)
if(!b || qdeleted(b) || !isslimeperson(b))
var/mob/living/carbon/human/body = b
if(!body || QDELETED(body) || !isslimeperson(body))
SS.bodies -= b
continue
var/mob/living/carbon/human/body = b
var/list/L = list()
// HTML colors need a # prefix
@@ -311,7 +308,7 @@
var/mob/living/carbon/human/selected = locate(params["ref"])
if(!(selected in SS.bodies))
return
if(!selected || qdeleted(selected) || !isslimeperson(selected))
if(!selected || QDELETED(selected) || !isslimeperson(selected))
SS.bodies -= selected
return
if(M.current == selected)
@@ -2,42 +2,14 @@
// Humans cursed to stay in the darkness, lest their life forces drain. They regain health in shadow and die in light.
name = "???"
id = "shadow"
darksight = 8
invis_sight = SEE_INVISIBLE_MINIMUM
sexes = 0
blacklisted = 1
ignored_by = list(/mob/living/simple_animal/hostile/faithless)
meat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/shadow
species_traits = list(NOBREATH,NOBLOOD,RADIMMUNE,VIRUSIMMUNE)
dangerous_existence = 1
var/datum/action/innate/shadow/darkvision/vision_toggle
mutanteyes = /obj/item/organ/eyes/night_vision
/datum/action/innate/shadow/darkvision //Darkvision toggle so shadowpeople can actually see where darkness is
name = "Toggle Darkvision"
check_flags = AB_CHECK_CONSCIOUS
background_icon_state = "bg_default"
button_icon_state = "blind"
/datum/action/innate/shadow/darkvision/Activate()
var/mob/living/carbon/human/H = owner
if(H.see_in_dark < 8)
H.see_in_dark = 8
H.see_invisible = SEE_INVISIBLE_MINIMUM
H << "<span class='notice'>You adjust your vision to pierce the darkness.</span>"
else
H.see_in_dark = 2
H.see_invisible = SEE_INVISIBLE_LIVING
H << "<span class='notice'>You adjust your vision to recognize the shadows.</span>"
/datum/species/shadow/on_species_gain(mob/living/carbon/C, datum/species/old_species)
. = ..()
vision_toggle = new
vision_toggle.Grant(C)
/datum/species/shadow/on_species_loss(mob/living/carbon/C)
. = ..()
if(vision_toggle)
vision_toggle.Remove(C)
/datum/species/shadow/spec_life(mob/living/carbon/human/H)
var/light_amount = 0
@@ -137,7 +137,7 @@ There are several things that need to be remembered:
else if(!(dna && dna.species.nojumpsuit))
// Automatically drop anything in store / id / belt if you're not wearing a uniform. //CHECK IF NECESARRY
for(var/obj/item/thing in list(r_store, l_store, wear_id, belt))
for(var/obj/item/thing in list(r_store, l_store, wear_id, belt)) //
dropItemToGround(thing)
apply_overlay(UNIFORM_LAYER)
@@ -576,4 +576,4 @@ generate/load female uniform sprites matching all previously decided variables
observers -= observe
if(!observers.len)
observers = null
break
break
@@ -345,7 +345,7 @@
for(var/obj/item/I in M.held_items)
if(I == pickupTarget)
M.visible_message("<span class='danger'>[src] snatches [pickupTarget] from [M].</span>", "<span class='userdanger'>[src] snatched [pickupTarget]!</span>")
if(M.temporarilyRemoveItemFromInventory(pickupTarget) && !qdeleted(pickupTarget))
if(M.temporarilyRemoveItemFromInventory(pickupTarget) && !QDELETED(pickupTarget))
equip_item(pickupTarget)
else
M.visible_message("<span class='danger'>[src] tried to snatch [pickupTarget] from [M], but failed!</span>", "<span class='userdanger'>[src] tried to grab [pickupTarget]!</span>")
@@ -45,6 +45,7 @@
internal_organs += new /obj/item/organ/heart
internal_organs += new /obj/item/organ/brain
internal_organs += new /obj/item/organ/tongue
internal_organs += new /obj/item/organ/eyes
..()
/mob/living/carbon/monkey/movement_delay()
@@ -301,4 +301,4 @@ var/global/list/limb_icon_cache = list()
remove_overlay(BODYPARTS_LAYER)
overlays_standing[BODYPARTS_LAYER] = limb_icon_cache[icon_render_key]
apply_overlay(BODYPARTS_LAYER)
update_damage_overlays()
update_damage_overlays()
+1 -1
View File
@@ -766,7 +766,7 @@
return 0
/mob/living/proc/harvest(mob/living/user)
if(qdeleted(src))
if(QDELETED(src))
return
if(butcher_results)
for(var/path in butcher_results)
+9 -1
View File
@@ -33,6 +33,7 @@ var/list/ai_list = list()
var/list/connected_robots = list()
var/aiRestorePowerRoutine = 0
var/requires_power = POWER_REQ_ALL
var/can_be_carded = TRUE
//var/list/laws = list()
var/alarms = list("Motion"=list(), "Fire"=list(), "Atmosphere"=list(), "Power"=list(), "Camera"=list(), "Burglar"=list())
var/viewalerts = 0
@@ -790,6 +791,10 @@ var/list/ai_list = list()
if(!mind)
user << "<span class='warning'>No intelligence patterns detected.</span>" //No more magical carding of empty cores, AI RETURN TO BODY!!!11
return
if(!can_be_carded)
user << "<span class='boldwarning'>Transfer failed.</span>"
return
ShutOffDoomsdayDevice()
new /obj/structure/AIcore/deactivated(loc)//Spawns a deactivated terminal at AI location.
ai_restore_power()//So the AI initially has power.
control_disabled = 1//Can't control things remotely if you're stuck in a card!
@@ -881,7 +886,7 @@ var/list/ai_list = list()
malfhacking = 0
clear_alert("hackingapc")
if(!istype(apc) || qdeleted(apc) || apc.stat & BROKEN)
if(!istype(apc) || QDELETED(apc) || apc.stat & BROKEN)
src << "<span class='danger'>Hack aborted. The designated APC no \
longer exists on the power network.</span>"
playsound(get_turf(src), 'sound/machines/buzz-two.ogg', 50, 1)
@@ -902,6 +907,9 @@ var/list/ai_list = list()
exclusive control."
apc.update_icon()
/mob/living/silicon/ai/resist()
return
/mob/living/silicon/ai/spawned/New(loc, datum/ai_laws/L, mob/target_ai)
if(!target_ai)
target_ai = src //cheat! just give... ourselves as the spawned AI, because that's technically correct
+13 -10
View File
@@ -19,17 +19,8 @@
shuttle_caller_list -= src
SSshuttle.autoEvac()
if(nuking)
set_security_level("red")
nuking = FALSE
for(var/obj/item/weapon/pinpointer/P in pinpointer_list)
P.switch_mode_to(TRACK_NUKE_DISK) //Party's over, back to work, everyone
P.nuke_warning = FALSE
ShutOffDoomsdayDevice()
if(doomsday_device)
doomsday_device.timing = FALSE
SSshuttle.clearHostileEnvironment(doomsday_device)
qdel(doomsday_device)
if(explosive)
spawn(10)
explosion(src.loc, 3, 6, 12, 15)
@@ -40,3 +31,15 @@
if(istype(loc, /obj/item/device/aicard))
loc.icon_state = "aicard-404"
/mob/living/silicon/ai/proc/ShutOffDoomsdayDevice()
if(nuking)
set_security_level("red")
nuking = FALSE
for(var/obj/item/weapon/pinpointer/P in pinpointer_list)
P.switch_mode_to(TRACK_NUKE_DISK) //Party's over, back to work, everyone
P.nuke_warning = FALSE
if(doomsday_device)
doomsday_device.timing = FALSE
SSshuttle.clearHostileEnvironment(doomsday_device)
qdel(doomsday_device)
@@ -87,7 +87,7 @@
cameraFollow = null
unset_machine()
if(!eyeobj || !eyeobj.loc || qdeleted(eyeobj))
if(!eyeobj || !eyeobj.loc || QDELETED(eyeobj))
src << "ERROR: Eyeobj not found. Creating new eye..."
eyeobj = new(loc)
eyeobj.ai = src
+1 -1
View File
@@ -19,7 +19,7 @@
// messenging the client
malfhacked(malfhack)
if(!eyeobj || qdeleted(eyeobj) || !eyeobj.loc)
if(!eyeobj || QDELETED(eyeobj) || !eyeobj.loc)
view_core()
if(machine)
@@ -30,4 +30,4 @@
update_icons()
sql_report_cyborg_death(src)
sql_report_death(src)
@@ -136,7 +136,7 @@
bot_patrol()
if(target)
if(qdeleted(target) || !isturf(target.loc))
if(QDELETED(target) || !isturf(target.loc))
target = null
mode = BOT_IDLE
return
@@ -35,7 +35,7 @@
user << "Can't become a drone before the game has started."
return
var/be_drone = alert("Become a drone? (Warning, You can no longer be cloned!)",,"Yes","No")
if(be_drone == "No" || qdeleted(src) || !isobserver(user))
if(be_drone == "No" || QDELETED(src) || !isobserver(user))
return
var/mob/living/simple_animal/drone/D = new drone_type(get_turf(loc))
D.admin_spawned = admin_spawned
@@ -55,11 +55,12 @@
removechains()
/mob/living/simple_animal/hostile/guardian/beam/proc/cleardeletedchains()
if(summonerchain && qdeleted(summonerchain))
if(summonerchain && QDELETED(summonerchain))
summonerchain = null
if(enemychains.len)
for(var/chain in enemychains)
if(!chain || qdeleted(chain))
var/datum/cd = chain
if(!chain || QDELETED(cd))
enemychains -= chain
/mob/living/simple_animal/hostile/guardian/beam/proc/shockallchains()
@@ -48,7 +48,7 @@
casting = 1
icon_state = "[initial(icon_state)][casting]"
if(do_after_mob(src, A, spellcasttime, uninterruptible = 1, progress = 0)) //Break LOS to dodge.
if(qdeleted(src))
if(QDELETED(src))
return
if((A in view(src)))
A.do_attack_animation(A, spellanimation)
@@ -50,7 +50,6 @@
see_invisible = SEE_INVISIBLE_MINIMUM
see_in_dark = 4
var/playable_spider = FALSE
devourable = 1
/mob/living/simple_animal/hostile/poison/giant_spider/Topic(href, href_list)
if(href_list["activate"])
@@ -66,7 +65,7 @@
if(key || !playable_spider)//Someone is in it or the fun police are shutting it down
return 0
var/spider_ask = alert("Become a spider?", "Are you australian?", "Yes", "No")
if(spider_ask == "No" || !src || qdeleted(src))
if(spider_ask == "No" || !src || QDELETED(src))
return 1
if(key)
user << "<span class='notice'>Someone else already took this spider.</span>"
@@ -579,7 +579,7 @@ Difficulty: Very Hard
..()
if(ready_to_deploy)
var/be_helper = alert("Become a Lightgeist? (Warning, You can no longer be cloned!)",,"Yes","No")
if(be_helper == "Yes" && !qdeleted(src) && isobserver(user))
if(be_helper == "Yes" && !QDELETED(src) && isobserver(user))
var/mob/living/simple_animal/hostile/lightgeist/W = new /mob/living/simple_animal/hostile/lightgeist(get_turf(loc))
W.key = user.key
@@ -706,7 +706,7 @@ Difficulty: Very Hard
/obj/structure/closet/stasis/process()
if(holder_animal)
if(holder_animal.stat == DEAD && !qdeleted(holder_animal))
if(holder_animal.stat == DEAD && !QDELETED(holder_animal))
dump_contents()
holder_animal.gib()
return
@@ -734,7 +734,7 @@ Difficulty: Very Hard
L.disabilities &= ~MUTE
L.status_flags &= ~GODMODE
L.notransform = 0
if(holder_animal && !qdeleted(holder_animal))
if(holder_animal && !QDELETED(holder_animal))
holder_animal.mind.transfer_to(L)
L.mind.RemoveSpell(/obj/effect/proc_holder/spell/targeted/exit_possession)
if(kill || !isanimal(loc))
@@ -213,7 +213,7 @@ Difficulty: Medium
fire_rain()
icon_state = "dragon"
if(swoop_target && !qdeleted(swoop_target) && swoop_target.z == src.z)
if(swoop_target && !QDELETED(swoop_target) && swoop_target.z == src.z)
tturf = get_turf(swoop_target)
else
tturf = get_turf(src)
@@ -228,7 +228,7 @@ Difficulty: Medium
L.gib()
else
L.adjustBruteLoss(75)
if(L && !qdeleted(L)) // Some mobs are deleted on death
if(L && !QDELETED(L)) // Some mobs are deleted on death
var/throw_dir = get_dir(src, L)
if(L.loc == loc)
throw_dir = pick(alldirs)
@@ -80,7 +80,7 @@ Difficulty: Hard
/mob/living/simple_animal/hostile/megafauna/hierophant/Life()
. = ..()
if(. && spawned_beacon && !qdeleted(spawned_beacon) && !client)
if(. && spawned_beacon && !QDELETED(spawned_beacon) && !client)
if(target || loc == spawned_beacon.loc)
timeout_time = initial(timeout_time)
else
@@ -500,7 +500,7 @@ Difficulty: Hard
if(!currently_seeking)
currently_seeking = TRUE
targetturf = get_turf(target)
while(target && src && !qdeleted(src) && currently_seeking && x && y && targetturf) //can this target actually be sook out
while(target && src && !QDELETED(src) && currently_seeking && x && y && targetturf) //can this target actually be sook out
if(!moving) //we're out of tiles to move, find more and where the target is!
more_previouser_moving_dir = previous_moving_dir
previous_moving_dir = moving_dir
@@ -207,16 +207,7 @@
/obj/effect/proc_holder/spell/targeted/night_vision/cast(list/targets,mob/user = usr)
for(var/mob/living/target in targets)
if(ishuman(target))
var/mob/living/carbon/human/H = target
if(H.dna.species.invis_sight == SEE_INVISIBLE_LIVING)
H.dna.species.invis_sight = SEE_INVISIBLE_NOLIGHTING
name = "Toggle Nightvision \[ON]"
else
H.dna.species.invis_sight = SEE_INVISIBLE_LIVING
name = "Toggle Nightvision \[OFF]"
else
if(!iscarbon(target)) //Carbons should be toggling their vision via organ, this spell is used as a power for simple mobs
if(target.see_invisible == SEE_INVISIBLE_LIVING)
target.see_invisible = SEE_INVISIBLE_NOLIGHTING
name = "Toggle Nightvision \[ON]"
@@ -224,7 +215,6 @@
target.see_invisible = SEE_INVISIBLE_LIVING
name = "Toggle Nightvision \[OFF]"
/mob/living/simple_animal/hostile/statue/sentience_act()
faction -= "neutral"
+2 -1
View File
@@ -71,4 +71,5 @@
update_client_colour()
if(client)
client.click_intercept = null
client.view = world.view // Resets the client.view in case it was changed.
client.view = world.view // Resets the client.view in case it was changed.
@@ -1381,414 +1381,3 @@
/datum/sprite_accessory/legs/digitigrade_lizard
name = "Digitigrade Legs"
/* tbi eventually idk
/datum/sprite_accessory/legs/digitigrade_mam
name = "Anthro Digitigrade Legs"
icon = 'icons/mob/mam_bodyparts.dmi'
*/
//Human Ears/Tails
/datum/sprite_accessory/ears/fox
name = "Fox"
icon_state = "fox"
hasinner = 0
icon = 'icons/mob/mam_bodyparts.dmi'
/datum/sprite_accessory/ears/wolf
name = "Wolf"
icon_state = "wolf"
hasinner = 1
icon = 'icons/mob/mam_bodyparts.dmi'
/datum/sprite_accessory/tails/human/fox
name = "Fox"
icon_state = "fox"
icon = 'icons/mob/mam_bodyparts.dmi'
extra = 1
/datum/sprite_accessory/tails_animated/human/fox
name = "Fox"
icon_state = "fox"
icon = 'icons/mob/mam_bodyparts.dmi'
extra = 1
/datum/sprite_accessory/tails/human/wolf
name = "Wolf"
icon_state = "wolf"
icon = 'icons/mob/mam_bodyparts.dmi'
/datum/sprite_accessory/tails_animated/human/wolf
name = "Wolf"
icon_state = "wolf"
icon = 'icons/mob/mam_bodyparts.dmi'
/datum/sprite_accessory/tails/human/catbig
name = "Cat, Big"
icon_state = "catbig"
icon = 'icons/mob/mam_bodyparts.dmi'
/datum/sprite_accessory/tails_animated/human/catbig
name = "Cat, Big"
icon_state = "catbig"
icon = 'icons/mob/mam_bodyparts.dmi'
/datum/sprite_accessory/ears/fennec
name = "Fennec"
icon_state = "fennec"
icon = 'icons/mob/mam_bodyparts.dmi'
/datum/sprite_accessory/tails/human/fennec
name = "Fennec"
icon_state = "fennec"
icon = 'icons/mob/mam_bodyparts.dmi'
/datum/sprite_accessory/tails_animated/human/fennec
name = "Fennec"
icon_state = "fennec"
icon = 'icons/mob/mam_bodyparts.dmi'
/datum/sprite_accessory/ears/lab
name = "Dog, Floppy"
icon_state = "lab"
hasinner = 0
icon = 'icons/mob/mam_bodyparts.dmi'
/datum/sprite_accessory/tails/human/husky
name = "Husky"
icon_state = "husky"
icon = 'icons/mob/mam_bodyparts.dmi'
extra = 1
/datum/sprite_accessory/tails_animated/human/husky
name = "Husky"
icon_state = "husky"
icon = 'icons/mob/mam_bodyparts.dmi'
extra = 1
/datum/sprite_accessory/ears/murid
name = "Murid"
icon_state = "murid"
icon = 'icons/mob/mam_bodyparts.dmi'
/datum/sprite_accessory/tails/human/murid
name = "Murid"
icon_state = "murid"
color_src = 0
icon = 'icons/mob/mam_bodyparts.dmi'
/datum/sprite_accessory/tails_animated/human/murid
name = "Murid"
icon_state = "murid"
color_src = 0
icon = 'icons/mob/mam_bodyparts.dmi'
/datum/sprite_accessory/tails/human/shark
name = "Shark"
icon_state = "shark"
color_src = 0
icon = 'icons/mob/mam_bodyparts.dmi'
/datum/sprite_accessory/tails/human/shark/datashark
name = "datashark"
icon_state = "datashark"
color_src = 0
icon = 'icons/mob/mam_bodyparts.dmi'
/datum/sprite_accessory/tails/human/ailurus
name = "ailurus"
icon_state = "ailurus"
color_src = 0
icon = 'icons/mob/mam_bodyparts.dmi'
/datum/sprite_accessory/ears/squirrel
name = "Squirrel"
icon_state = "squirrel"
hasinner= 1
icon = 'icons/mob/mam_bodyparts.dmi'
/datum/sprite_accessory/tails/human/squirrel
name = "Squirrel"
icon_state = "squirrel"
icon = 'icons/mob/mam_bodyparts.dmi'
/datum/sprite_accessory/tails_animated/human/squirrel
name = "Squirrel"
icon_state = "squirrel"
icon = 'icons/mob/mam_bodyparts.dmi'
//Mammal Bodyparts
/datum/sprite_accessory/mam_ears
icon = 'icons/mob/mam_bodyparts.dmi'
/datum/sprite_accessory/mam_ears/none
name = "None"
/datum/sprite_accessory/mam_tails
icon = 'icons/mob/mam_bodyparts.dmi'
/datum/sprite_accessory/mam_tails/none
name = "None"
/datum/sprite_accessory/mam_tails_animated
icon = 'icons/mob/mam_bodyparts.dmi'
/datum/sprite_accessory/mam_tails_animated/none
name = "None"
//Snouts
/datum/sprite_accessory/snouts/lcanid
name = "Fox, Long"
icon_state = "lcanid"
icon = 'icons/mob/mam_bodyparts.dmi'
extra = 1
/datum/sprite_accessory/snouts/scanid
name = "Fox, Short"
icon_state = "scanid"
icon = 'icons/mob/mam_bodyparts.dmi'
extra = 1
/datum/sprite_accessory/snouts/wolf
name = "Wolf"
icon_state = "wolf"
icon = 'icons/mob/mam_bodyparts.dmi'
extra = 1
/datum/sprite_accessory/snouts/husky
name = "Husky"
icon_state = "husky"
icon = 'icons/mob/mam_bodyparts.dmi'
extra = 1
//Cat, Big
/datum/sprite_accessory/mam_ears/catbig
name = "Cat, Big"
icon_state = "cat"
hasinner = 1
icon = 'icons/mob/mutant_bodyparts.dmi'
/datum/sprite_accessory/mam_tails/catbig
name = "Cat, Big"
icon_state = "catbig"
/datum/sprite_accessory/mam_tails_animated/catbig
name = "Cat, Big"
icon_state = "catbig"
//Wolf
/datum/sprite_accessory/mam_ears/wolf
name = "Wolf"
icon_state = "wolf"
hasinner = 1
/datum/sprite_accessory/mam_tails/wolf
name = "Wolf"
icon_state = "wolf"
/datum/sprite_accessory/mam_tails_animated/wolf
name = "Wolf"
icon_state = "wolf"
//Fox
/datum/sprite_accessory/mam_ears/fox
name = "Fox"
icon_state = "fox"
hasinner = 0
/datum/sprite_accessory/mam_tails/fox
name = "Fox"
icon_state = "fox"
extra = 1
extra_color_src = MUTCOLORS2
/datum/sprite_accessory/mam_tails_animated/fox
name = "Fox"
icon_state = "fox"
extra = 1
extra_color_src = MUTCOLORS2
//Fennec
/datum/sprite_accessory/mam_ears/fennec
name = "Fennec"
icon_state = "fennec"
hasinner = 1
/datum/sprite_accessory/mam_tails/fennec
name = "Fennec"
icon_state = "fennec"
/datum/sprite_accessory/mam_tails_animated/fennec
name = "Fennec"
icon_state = "fennec"
//Lab
/datum/sprite_accessory/mam_ears/lab
name = "Dog, Long"
icon_state = "lab"
/datum/sprite_accessory/mam_tails/lab
name = "Lab"
icon_state = "lab"
/datum/sprite_accessory/mam_tails_animated/lab
name = "Lab"
icon_state = "lab"
//Husky
/datum/sprite_accessory/mam_ears/husky
name = "Husky"
icon_state = "wolf"
hasinner = 1
icon = 'icons/mob/mam_bodyparts.dmi'
extra = 1
/datum/sprite_accessory/mam_tails/husky
name = "Husky"
icon_state = "husky"
extra = 1
/datum/sprite_accessory/mam_tails_animated/husky
name = "Husky"
icon_state = "husky"
extra = 1
//Murid
/datum/sprite_accessory/mam_ears/murid
name = "Murid"
icon_state = "murid"
/datum/sprite_accessory/mam_tails/murid
name = "Murid"
icon_state = "murid"
color_src = 0
/datum/sprite_accessory/mam_tails_animated/murid
name = "Murid"
icon_state = "murid"
color_src = 0
//Shark
/datum/sprite_accessory/mam_tails/shark
name = "Shark"
icon_state = "shark"
color_src = 0
icon = 'icons/mob/mam_bodyparts.dmi'
/datum/sprite_accessory/mam_tails/shark/datashark
name = "DataShark"
icon_state = "datashark"
color_src = 0
icon = 'icons/mob/mam_bodyparts.dmi'
//Squirrel
/datum/sprite_accessory/mam_ears/squirrel
name = "Squirrel"
icon_state = "squirrel"
hasinner= 1
/datum/sprite_accessory/mam_tails/squirrel
name = "Squirrel"
icon_state = "squirrel"
/datum/sprite_accessory/mam_tails_animated/squirrel
name = "Squirrel"
icon_state = "squirrel"
/datum/sprite_accessory/mam_tails/ailurus
name = "Ailurus"
icon_state = "ailurus"
//Capra
/datum/sprite_accessory/mam_tails/capra
name = "Capra"
icon_state = "capra"
//Hawk
/datum/sprite_accessory/mam_tails/hawk
name = "Hawk"
icon_state = "hawk"
//Mammal Specific Body Markings
/datum/sprite_accessory/mam_body_markings
color_src = MUTCOLORS2
icon = 'icons/mob/mam_bodyparts.dmi'
/datum/sprite_accessory/mam_body_markings/none
name = "None"
icon_state = "none"
/datum/sprite_accessory/mam_body_markings/belly
name = "Belly"
icon_state = "belly"
gender_specific = 1
/*
/datum/sprite_accessory/mam_body_markings/bellyhandsfeet
name = "Belly, Hands, & Feet"
icon_state = "bellyhandsfeet"
gender_specific = 1
extra = 1
extra_color_src = MUTCOLORS3
*/
//Xeno Dorsal Tubes
/datum/sprite_accessory/xeno_dorsal
icon = 'icons/mob/exotic_bodyparts.dmi'
color_src = 0
/datum/sprite_accessory/xeno_dorsal/none
name = "None"
/datum/sprite_accessory/xeno_dorsal/normal
name = "Dorsal Tubes"
icon_state = "dortubes"
//Xeno Tail
/datum/sprite_accessory/xeno_tail
icon = 'icons/mob/exotic_bodyparts.dmi'
color_src = 0
/datum/sprite_accessory/xeno_tail/none
name = "None"
/datum/sprite_accessory/xeno_tail/normal
name = "Xenomorph Tail"
icon_state = "xeno"
//Xeno Caste Heads
//unused as of October 3, 2016
/datum/sprite_accessory/xeno_head
icon = 'icons/mob/exotic_bodyparts.dmi'
color_src = 0
/datum/sprite_accessory/xeno_head/none
name = "None"
/datum/sprite_accessory/xeno_head/hunter
name = "Hunter"
icon_state = "hunter"
/datum/sprite_accessory/xeno_head/drone
name = "Drone"
icon_state = "drone"
/datum/sprite_accessory/xeno_head/sentinel
name = "Sentinel"
icon_state = "sentinel"
/*
//Slimecoon Parts
/datum/sprite_accessory/slimecoon_ears
icon = 'icons/mob/exotic_bodyparts.dmi'
name = "Slimecoon Ears"
icon_state = "slimecoon"
/datum/sprite_accessory/slimecoon_tail
icon = 'icons/mob/exotic_bodyparts.dmi'
name = "Slimecoon Tail"
icon_state = "slimecoon"
/datum/sprite_accessory/slimecoon_snout
icon = 'icons/mob/exotic_bodyparts.dmi'
name = "Hunter"
icon_state = "slimecoon" */