From 278a4c38eca99fffd0a74f813b8bf4543cf254cd Mon Sep 17 00:00:00 2001 From: Mloc Date: Thu, 9 Jul 2015 19:17:04 +0100 Subject: [PATCH 1/3] get rid of mob.see_in_dark and species.darksight They don't work with the current lighting system and cause weird artifacts. Signed-off-by: Mloc --- code/game/gamemodes/events.dm | 4 ++-- code/game/machinery/wishgranter.dm | 3 +-- code/game/objects/items/weapons/AI_modules.dm | 2 +- code/modules/admin/verbs/randomverbs.dm | 2 +- code/modules/mob/dead/observer/observer.dm | 3 ++- code/modules/mob/death.dm | 1 - code/modules/mob/freelook/eye.dm | 1 - code/modules/mob/living/blob/blob.dm | 1 - code/modules/mob/living/carbon/alien/life.dm | 2 -- code/modules/mob/living/carbon/brain/life.dm | 4 +--- code/modules/mob/living/carbon/human/life.dm | 4 ---- .../living/carbon/human/species/outsider/shadow.dm | 3 +-- .../mob/living/carbon/human/species/species.dm | 1 - .../mob/living/carbon/human/species/station/slime.dm | 1 - .../living/carbon/human/species/station/station.dm | 2 -- code/modules/mob/living/carbon/metroid/metroid.dm | 3 +-- code/modules/mob/living/silicon/ai/ai.dm | 1 + code/modules/mob/living/silicon/ai/life.dm | 11 ++++------- code/modules/mob/living/silicon/robot/life.dm | 2 -- .../mob/living/simple_animal/constructs/constructs.dm | 2 -- code/modules/mob/living/simple_animal/friendly/cat.dm | 1 - .../mob/living/simple_animal/friendly/corgi.dm | 1 - .../mob/living/simple_animal/friendly/farm_animals.dm | 2 -- .../mob/living/simple_animal/friendly/mouse.dm | 1 - code/modules/mob/living/simple_animal/hostile/bear.dm | 1 - .../mob/living/simple_animal/hostile/giant_spider.dm | 3 +-- code/modules/mob/living/simple_animal/kobold.dm | 1 - code/modules/mob/mob_defines.dm | 1 + code/modules/spells/spellbook.dm | 1 - maps/RandomZLevels/wildwest.dm | 3 +-- 30 files changed, 18 insertions(+), 50 deletions(-) diff --git a/code/game/gamemodes/events.dm b/code/game/gamemodes/events.dm index d49247263f..cc6722f8a5 100644 --- a/code/game/gamemodes/events.dm +++ b/code/game/gamemodes/events.dm @@ -324,7 +324,7 @@ Would like to add a law like "Law x is _______" where x = a number, and _____ is //AI laws for(var/mob/living/silicon/ai/M in living_mob_list) - if(M.stat != 2 && M.see_in_dark != 0) + if(M.stat != 2 && M.has_power) var/who2 = pick("ALIENS", "BEARS", "CLOWNS", "XENOS", "PETES", "BOMBS", "FETISHES", "WIZARDS", "SYNDICATE AGENTS", "CENTCOM OFFICERS", "SPACE PIRATES", "TRAITORS", "MONKEYS", "BEES", "CARP", "CRABS", "EELS", "BANDITS", "LIGHTS") var/what2 = pick("BOLTERS", "STAVES", "DICE", "SINGULARITIES", "TOOLBOXES", "NETTLES", "AIRLOCKS", "CLOTHES", "WEAPONS", "MEDKITS", "BOMBS", "CANISTERS", "CHAIRS", "BBQ GRILLS", "ID CARDS", "CAPTAINS") var/what2pref = pick("SOFT", "WARM", "WET", "COLD", "ICY", "SEXY", "UGLY", "CUBAN") @@ -468,4 +468,4 @@ Would like to add a law like "Law x is _______" where x = a number, and _____ is world << "Ion Storm Main Done" - */ \ No newline at end of file + */ diff --git a/code/game/machinery/wishgranter.dm b/code/game/machinery/wishgranter.dm index 71b7de64c0..3fd4fae3e8 100644 --- a/code/game/machinery/wishgranter.dm +++ b/code/game/machinery/wishgranter.dm @@ -45,7 +45,6 @@ if (!(XRAY in user.mutations)) user.mutations.Add(XRAY) user.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS) - user.see_in_dark = 8 user.see_invisible = SEE_INVISIBLE_LEVEL_TWO if (!(COLD_RESISTANCE in user.mutations)) @@ -67,4 +66,4 @@ show_objectives(user.mind) user << "You have a very bad feeling about this." - return \ No newline at end of file + return diff --git a/code/game/objects/items/weapons/AI_modules.dm b/code/game/objects/items/weapons/AI_modules.dm index f620fd64e9..8acd6bd09f 100755 --- a/code/game/objects/items/weapons/AI_modules.dm +++ b/code/game/objects/items/weapons/AI_modules.dm @@ -40,7 +40,7 @@ AI MODULES if (comp.current.stat == 2 || comp.current.control_disabled == 1) usr << "Upload failed. No signal is being detected from the AI." - else if (comp.current.see_in_dark == 0) + else if (!comp.current.has_power) usr << "Upload failed. Only a faint signal is being detected from the AI, and it is not responding to our requests. It may be low on power." else src.transmitInstructions(comp.current, usr) diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index b240f087a9..918bd78055 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -468,7 +468,7 @@ Traitors and the like can also be revived with the previous role mostly intact. for(var/mob/living/silicon/ai/M in mob_list) if (M.stat == 2) usr << "Upload failed. No signal is being detected from the AI." - else if (M.see_in_dark == 0) + else if (!M.has_power) usr << "Upload failed. Only a faint signal is being detected from the AI, and it is not responding to our requests. It may be low on power." else M.add_ion_law(input) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 914576c5ee..5835e33c73 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -34,7 +34,6 @@ var/global/list/image/ghost_sightless_images = list() //this is a list of images /mob/dead/observer/New(mob/body) sight |= SEE_TURFS | SEE_MOBS | SEE_OBJS | SEE_SELF see_invisible = SEE_INVISIBLE_OBSERVER - see_in_dark = 100 verbs += /mob/dead/observer/proc/dead_tele stat = DEAD @@ -646,10 +645,12 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp /mob/dead/observer/proc/updateghostsight() if (!seedarkness) see_invisible = SEE_INVISIBLE_OBSERVER_NOLIGHTING + see_in_dark = 100 else see_invisible = SEE_INVISIBLE_OBSERVER if (!ghostvision) see_invisible = SEE_INVISIBLE_LIVING; + see_in_dark = 0 updateghostimages() /proc/updateallghostimages() diff --git a/code/modules/mob/death.dm b/code/modules/mob/death.dm index 07cd8f19ff..5341bd7616 100644 --- a/code/modules/mob/death.dm +++ b/code/modules/mob/death.dm @@ -70,7 +70,6 @@ blind.layer = 0 sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS - see_in_dark = 8 see_invisible = SEE_INVISIBLE_LEVEL_TWO drop_r_hand() diff --git a/code/modules/mob/freelook/eye.dm b/code/modules/mob/freelook/eye.dm index fb2b04a434..e77084553d 100644 --- a/code/modules/mob/freelook/eye.dm +++ b/code/modules/mob/freelook/eye.dm @@ -15,7 +15,6 @@ var/acceleration = 1 var/owner_follows_eye = 0 - see_in_dark = 7 status_flags = GODMODE invisibility = INVISIBILITY_EYE diff --git a/code/modules/mob/living/blob/blob.dm b/code/modules/mob/living/blob/blob.dm index 8bbf517e60..959e6ed379 100644 --- a/code/modules/mob/living/blob/blob.dm +++ b/code/modules/mob/living/blob/blob.dm @@ -4,7 +4,6 @@ icon = 'icons/mob/blob.dmi' icon_state = "blob_spore_temp" pass_flags = PASSBLOB - see_in_dark = 8 see_invisible = SEE_INVISIBLE_LEVEL_TWO var/ghost_name = "Unknown" var/creating_blob = 0 diff --git a/code/modules/mob/living/carbon/alien/life.dm b/code/modules/mob/living/carbon/alien/life.dm index 6e206ff10e..672e448531 100644 --- a/code/modules/mob/living/carbon/alien/life.dm +++ b/code/modules/mob/living/carbon/alien/life.dm @@ -120,13 +120,11 @@ sight |= SEE_TURFS sight |= SEE_MOBS sight |= SEE_OBJS - see_in_dark = 8 see_invisible = SEE_INVISIBLE_LEVEL_TWO else if (stat != 2) sight &= ~SEE_TURFS sight &= ~SEE_MOBS sight &= ~SEE_OBJS - see_in_dark = 2 see_invisible = SEE_INVISIBLE_LIVING if (healths) diff --git a/code/modules/mob/living/carbon/brain/life.dm b/code/modules/mob/living/carbon/brain/life.dm index dee4fe60a6..868dd79a0c 100644 --- a/code/modules/mob/living/carbon/brain/life.dm +++ b/code/modules/mob/living/carbon/brain/life.dm @@ -204,13 +204,11 @@ sight |= SEE_TURFS sight |= SEE_MOBS sight |= SEE_OBJS - see_in_dark = 8 see_invisible = SEE_INVISIBLE_LEVEL_TWO else if (stat != 2) sight &= ~SEE_TURFS sight &= ~SEE_MOBS sight &= ~SEE_OBJS - see_in_dark = 2 see_invisible = SEE_INVISIBLE_LIVING if (healths) @@ -273,4 +271,4 @@ emp_damage += rand(10,20) if(3) emp_damage += rand(0,10) - ..()*/ \ No newline at end of file + ..()*/ diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 605ecbed39..9c8a25eb7e 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1206,7 +1206,6 @@ if( stat == DEAD ) sight |= (SEE_TURFS|SEE_MOBS|SEE_OBJS) - see_in_dark = 8 if(!druggy) see_invisible = SEE_INVISIBLE_LEVEL_TWO if(healths) healths.icon_state = "health7" //DEAD healthmeter if(client) @@ -1229,12 +1228,9 @@ else sight &= ~(SEE_TURFS|SEE_MOBS|SEE_OBJS) - see_in_dark = species.darksight - see_invisible = see_in_dark>2 ? SEE_INVISIBLE_LEVEL_ONE : SEE_INVISIBLE_LIVING if(XRAY in mutations) sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS - see_in_dark = 8 if(!druggy) see_invisible = SEE_INVISIBLE_LEVEL_TWO if(seer==1) diff --git a/code/modules/mob/living/carbon/human/species/outsider/shadow.dm b/code/modules/mob/living/carbon/human/species/outsider/shadow.dm index dd614bb55b..cf2295a98c 100644 --- a/code/modules/mob/living/carbon/human/species/outsider/shadow.dm +++ b/code/modules/mob/living/carbon/human/species/outsider/shadow.dm @@ -8,7 +8,6 @@ language = "Sol Common" //todo? unarmed_types = list(/datum/unarmed_attack/claws/strong, /datum/unarmed_attack/bite/sharp) light_dam = 2 - darksight = 8 has_organ = list() siemens_coefficient = 0 @@ -23,4 +22,4 @@ /datum/species/shadow/handle_death(var/mob/living/carbon/human/H) spawn(1) new /obj/effect/decal/cleanable/ash(H.loc) - qdel(H) \ No newline at end of file + qdel(H) diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 74e55ec2f7..3f4432a817 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -99,7 +99,6 @@ var/list/inherent_verbs // Species-specific verbs. var/has_fine_manipulation = 1 // Can use small items. var/siemens_coefficient = 1 // The lower, the thicker the skin and better the insulation. - var/darksight = 2 // Native darksight distance. var/flags = 0 // Various specific features. var/slowdown = 0 // Passive movement speed malus (or boost, if negative) var/primitive_form // Lesser form, if any (ie. monkey for humans) diff --git a/code/modules/mob/living/carbon/human/species/station/slime.dm b/code/modules/mob/living/carbon/human/species/station/slime.dm index 6d5e918a95..b34aaa5b8e 100644 --- a/code/modules/mob/living/carbon/human/species/station/slime.dm +++ b/code/modules/mob/living/carbon/human/species/station/slime.dm @@ -10,7 +10,6 @@ unarmed_types = list(/datum/unarmed_attack/slime_glomp) flags = IS_RESTRICTED | NO_BLOOD | NO_SCAN | NO_SLIP | NO_BREATHE siemens_coefficient = 3 - darksight = 3 blood_color = "#05FF9B" flesh_color = "#05FFFB" diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm index a6b39ba38b..44536478a7 100644 --- a/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/code/modules/mob/living/carbon/human/species/station/station.dm @@ -22,7 +22,6 @@ tail_animation = 'icons/mob/species/unathi/tail.dmi' unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws, /datum/unarmed_attack/bite/sharp) primitive_form = "Stok" - darksight = 3 gluttonous = 1 blurb = "A heavily reptillian species, Unathi (or 'Sinta as they call themselves) hail from the \ @@ -73,7 +72,6 @@ tail = "tajtail" tail_animation = 'icons/mob/species/tajaran/tail.dmi' unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws, /datum/unarmed_attack/bite/sharp) - darksight = 8 slowdown = -1 brute_mod = 1.2 diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index 8c97286e3f..9fa3cc5071 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -14,7 +14,6 @@ update_icon = 0 nutrition = 700 - see_in_dark = 8 update_slimes = 0 // canstun and canweaken don't affect slimes because they ignore stun and weakened variables @@ -411,4 +410,4 @@ /mob/living/carbon/slime/can_use_vents() if(Victim) return "You cannot ventcrawl while feeding." - ..() \ No newline at end of file + ..() diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 878fcbf667..d17a76db2f 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -49,6 +49,7 @@ var/list/ai_verbs_default = list( var/list/network = list("Exodus") var/obj/machinery/camera/camera = null var/list/connected_robots = list() + var/has_power = 0 var/aiRestorePowerRoutine = 0 var/viewalerts = 0 var/icon/holo_icon//Default is assigned when AI is created. diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm index 3cdb3c802c..19da6665bf 100644 --- a/code/modules/mob/living/silicon/ai/life.dm +++ b/code/modules/mob/living/silicon/ai/life.dm @@ -38,19 +38,18 @@ src << "APU GENERATOR FAILURE! (System Damaged)" stop_apu(1) - var/blind = 0 + has_power = 1 var/area/loc = null if (istype(T, /turf)) loc = T.loc if (istype(loc, /area)) if (!loc.power_equip && !istype(src.loc,/obj/item) && !APU_power) - blind = 1 + has_power = 0 - if (!blind) + if (has_power) src.sight |= SEE_TURFS src.sight |= SEE_MOBS src.sight |= SEE_OBJS - src.see_in_dark = 8 src.see_invisible = SEE_INVISIBLE_LIVING if (aiRestorePowerRoutine==2) @@ -77,12 +76,10 @@ //Blind the AI src.blind.screen_loc = "1,1 to 15,15" - if (src.blind.layer!=18) - src.blind.layer = 18 + src.sight = src.sight&~SEE_TURFS src.sight = src.sight&~SEE_MOBS src.sight = src.sight&~SEE_OBJS - src.see_in_dark = 0 src.see_invisible = SEE_INVISIBLE_LIVING //Now to tell the AI why they're blind and dying slowly. diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index cefc6a7331..86ca42afd9 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -162,13 +162,11 @@ see_invisible = SEE_INVISIBLE_MINIMUM else if (src.sight_mode & BORGTHERM) src.sight |= SEE_MOBS - src.see_in_dark = 8 src.see_invisible = SEE_INVISIBLE_LEVEL_TWO else if (src.stat != 2) src.sight &= ~SEE_MOBS src.sight &= ~SEE_TURFS src.sight &= ~SEE_OBJS - src.see_in_dark = 8 // see_in_dark means you can FAINTLY see in the dark, humans have a range of 3 or so, tajaran have it at 8 src.see_invisible = SEE_INVISIBLE_LIVING // This is normal vision (25), setting it lower for normal vision means you don't "see" things like darkness since darkness // has a "invisible" value of 15 diff --git a/code/modules/mob/living/simple_animal/constructs/constructs.dm b/code/modules/mob/living/simple_animal/constructs/constructs.dm index 7781a26744..65bf148ae4 100644 --- a/code/modules/mob/living/simple_animal/constructs/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs/constructs.dm @@ -150,7 +150,6 @@ attacktext = "slashed" speed = -1 environment_smash = 1 - see_in_dark = 7 attack_sound = 'sound/weapons/rapidslice.ogg' construct_spells = list(/spell/targeted/ethereal_jaunt/shift) @@ -228,7 +227,6 @@ attacktext = "violently stabbed" speed = -1 environment_smash = 1 - see_in_dark = 7 attack_sound = 'sound/weapons/pierce.ogg' construct_spells = list( diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 3197c6023c..9c78b95522 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -11,7 +11,6 @@ emote_see = list("shakes their head", "shivers") speak_chance = 1 turns_per_move = 5 - see_in_dark = 6 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat response_help = "pets" response_disarm = "gently pushes aside" diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm index 322d08dc9f..e5a670d472 100644 --- a/code/modules/mob/living/simple_animal/friendly/corgi.dm +++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm @@ -17,7 +17,6 @@ response_help = "pets" response_disarm = "bops" response_harm = "kicks" - see_in_dark = 5 mob_size = 8 var/obj/item/inventory_head diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 217b1f0914..7427a937aa 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -11,7 +11,6 @@ emote_see = list("shakes its head", "stamps a foot", "glares around") speak_chance = 1 turns_per_move = 5 - see_in_dark = 6 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat meat_amount = 4 response_help = "pets" @@ -95,7 +94,6 @@ emote_see = list("shakes its head") speak_chance = 1 turns_per_move = 5 - see_in_dark = 6 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat meat_amount = 6 response_help = "pets" diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index ad41fc28aa..0cca56ae30 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -13,7 +13,6 @@ small = 1 speak_chance = 1 turns_per_move = 5 - see_in_dark = 6 maxHealth = 5 health = 5 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm index 73de95acee..b673aee9f0 100644 --- a/code/modules/mob/living/simple_animal/hostile/bear.dm +++ b/code/modules/mob/living/simple_animal/hostile/bear.dm @@ -12,7 +12,6 @@ emote_see = list("stares ferociously", "stomps") speak_chance = 1 turns_per_move = 5 - see_in_dark = 6 meat_type = /obj/item/weapon/reagent_containers/food/snacks/bearmeat response_help = "pets" response_disarm = "gently pushes aside" diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm index 4d7a8f7e3a..ed3d451e20 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -15,7 +15,6 @@ emote_hear = list("chitters") speak_chance = 5 turns_per_move = 5 - see_in_dark = 10 meat_type = /obj/item/weapon/reagent_containers/food/snacks/xenomeat response_help = "pets" response_disarm = "gently pushes aside" @@ -199,4 +198,4 @@ #undef SPINNING_WEB #undef LAYING_EGGS #undef MOVING_TO_TARGET -#undef SPINNING_COCOON \ No newline at end of file +#undef SPINNING_COCOON diff --git a/code/modules/mob/living/simple_animal/kobold.dm b/code/modules/mob/living/simple_animal/kobold.dm index 3e52a40874..f634bd70f1 100644 --- a/code/modules/mob/living/simple_animal/kobold.dm +++ b/code/modules/mob/living/simple_animal/kobold.dm @@ -12,7 +12,6 @@ emote_see = list("looks around suspiciously.", "scratches it's arm.","putters around a bit.") speak_chance = 15 turns_per_move = 5 - see_in_dark = 6 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/monkey response_help = "pets" response_disarm = "gently pushes aside" diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 109e29f036..4ee12cad52 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -2,6 +2,7 @@ density = 1 layer = 4.0 animate_movement = 2 + see_in_dark = 0 // flags = NOREACT var/datum/mind/mind diff --git a/code/modules/spells/spellbook.dm b/code/modules/spells/spellbook.dm index 70d92f0183..54ceddd2cb 100644 --- a/code/modules/spells/spellbook.dm +++ b/code/modules/spells/spellbook.dm @@ -252,7 +252,6 @@ if (!(XRAY in H.mutations)) H.mutations.Add(XRAY) H.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS) - H.see_in_dark = 8 H.see_invisible = SEE_INVISIBLE_LEVEL_TWO H << "\blue The walls suddenly disappear." temp = "You have purchased a scrying orb, and gained x-ray vision." diff --git a/maps/RandomZLevels/wildwest.dm b/maps/RandomZLevels/wildwest.dm index d2935b69f6..f4221c9faa 100644 --- a/maps/RandomZLevels/wildwest.dm +++ b/maps/RandomZLevels/wildwest.dm @@ -55,7 +55,6 @@ if (!(XRAY in user.mutations)) user.mutations.Add(XRAY) user.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS) - user.see_in_dark = 8 user.see_invisible = SEE_INVISIBLE_LEVEL_TWO user << "\blue The walls suddenly disappear." user.dna.mutantrace = "shadow" @@ -171,4 +170,4 @@ C << "You have regenerated." C.visible_message("[usr] appears to wake from the dead, having healed all wounds.") C.update_canmove() - return 1 \ No newline at end of file + return 1 From 291f0b85560cd311a4fd69b67af2bac70828927a Mon Sep 17 00:00:00 2001 From: Mloc Date: Sun, 12 Jul 2015 15:47:13 +0100 Subject: [PATCH 2/3] client optimizations for lighting overlays Removes lighting transitions- they don't work with the new system. Greyscale overlays now use BLEND_OVERLAY instead of BLEND_MULTIPLY for better client performance. Light overlays in total darkness are now made invisible. Signed-off-by: Mloc --- code/modules/lighting/_lighting_defs.dm | 1 - code/modules/lighting/lighting_overlay.dm | 44 +++++++++++------------ code/modules/lighting/~lighting_undefs.dm | 1 - 3 files changed, 21 insertions(+), 25 deletions(-) diff --git a/code/modules/lighting/_lighting_defs.dm b/code/modules/lighting/_lighting_defs.dm index 57e6cc22d2..21fdafdaeb 100644 --- a/code/modules/lighting/_lighting_defs.dm +++ b/code/modules/lighting/_lighting_defs.dm @@ -3,7 +3,6 @@ #define LIGHTING_FALLOFF 1 // type of falloff to use for lighting; 1 for circular, 2 for square #define LIGHTING_LAMBERTIAN 1 // use lambertian shading for light sources #define LIGHTING_HEIGHT 1 // height off the ground of light sources on the pseudo-z-axis, you should probably leave this alone -#define LIGHTING_TRANSITIONS 1 // smooth, animated transitions, similar to /tg/station #define LIGHTING_ROUND_VALUE (1 / 128) //Value used to round lumcounts, values smaller than 1/255 don't matter (if they do, thanks sinking points), greater values will make lighting less precise, but in turn increase performance, VERY SLIGHTLY. #define LIGHTING_LAYER 10 // drawing layer for lighting overlays diff --git a/code/modules/lighting/lighting_overlay.dm b/code/modules/lighting/lighting_overlay.dm index a0bba14eeb..a22023d983 100644 --- a/code/modules/lighting/lighting_overlay.dm +++ b/code/modules/lighting/lighting_overlay.dm @@ -8,7 +8,6 @@ icon_state = "light1" layer = LIGHTING_LAYER invisibility = INVISIBILITY_LIGHTING - blend_mode = BLEND_MULTIPLY color = "#000000" var/lum_r @@ -53,32 +52,31 @@ lighting_update_overlays += src /atom/movable/lighting_overlay/proc/update_overlay() - var/mx = max(lum_r, lum_g, lum_b) - . = 1 // factor - if(mx > 1) - . = 1/mx - #if LIGHTING_TRANSITIONS == 1 - animate(src, - color = rgb(lum_r * 255 * ., lum_g * 255 * ., lum_b * 255 * .), - LIGHTING_INTERVAL - 1 - ) - #else - color = rgb(lum_r * 255 * ., lum_g * 255 * ., lum_b * 255 * .) - #endif - var/turf/T = loc if(istype(T)) //Incase we're not on a turf, pool ourselves, something happened. - if(color != "#000000") - T.luminosity = 1 - else //No light, set the turf's luminosity to 0 to remove it from view() - #if LIGHTING_TRANSITIONS == 1 - spawn(LIGHTING_INTERVAL - 1) + if(lum_r == lum_g && lum_r == lum_b) //greyscale + blend_mode = BLEND_OVERLAY + if(lum_r <= 0) + T.luminosity = 0 + color = "#000000" + alpha = 255 + else + T.luminosity = 1 + color = "#000000" + alpha = (1 - min(lum_r, 1)) * 255 + else + alpha = 255 + var/mx = max(lum_r, lum_g, lum_b) + . = 1 // factor + if(mx > 1) + . = 1/mx + blend_mode = BLEND_MULTIPLY + color = rgb(lum_r * 255 * ., lum_g * 255 * ., lum_b * 255 * .) + if(color != "#000000") + T.luminosity = 1 + else //No light, set the turf's luminosity to 0 to remove it from view() T.luminosity = 0 - #else - T.luminosity = 0 - #endif - else warning("A lighting overlay realised its loc was NOT a turf (actual loc: [loc][loc ? ", " + loc.type : ""]) in update_overlay() and got pooled!") qdel(src) diff --git a/code/modules/lighting/~lighting_undefs.dm b/code/modules/lighting/~lighting_undefs.dm index 9308cc6b65..772f70557a 100644 --- a/code/modules/lighting/~lighting_undefs.dm +++ b/code/modules/lighting/~lighting_undefs.dm @@ -3,7 +3,6 @@ #undef LIGHTING_FALLOFF #undef LIGHTING_LAMBERTIAN #undef LIGHTING_HEIGHT -#undef LIGHTING_TRANSITIONS #undef LIGHTING_RESOLUTION #undef LIGHTING_LAYER From bd705fb7e0caf78b7a5f87afb19f235c05f1d632 Mon Sep 17 00:00:00 2001 From: Mloc Date: Thu, 9 Jul 2015 19:50:19 +0100 Subject: [PATCH 3/3] optimize apply/remove_lum Light sources no longer track applied lumcounts in an assocative list, using shared-indices with the applied turf list instead. Signed-off-by: Mloc --- code/modules/lighting/light_source.dm | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/code/modules/lighting/light_source.dm b/code/modules/lighting/light_source.dm index a71550268c..8322e14098 100644 --- a/code/modules/lighting/light_source.dm +++ b/code/modules/lighting/light_source.dm @@ -143,15 +143,19 @@ if(!strength) //Don't add turfs that aren't affected to the affected turfs. continue - effect_r[T.lighting_overlay] = round(lum_r * strength, LIGHTING_ROUND_VALUE) - effect_g[T.lighting_overlay] = round(lum_g * strength, LIGHTING_ROUND_VALUE) - effect_b[T.lighting_overlay] = round(lum_b * strength, LIGHTING_ROUND_VALUE) + effect_r += round(lum_r * strength, LIGHTING_ROUND_VALUE) + effect_g += round(lum_g * strength, LIGHTING_ROUND_VALUE) + effect_b += round(lum_b * strength, LIGHTING_ROUND_VALUE) T.lighting_overlay.update_lumcount( round(lum_r * strength, LIGHTING_ROUND_VALUE), round(lum_g * strength, LIGHTING_ROUND_VALUE), round(lum_b * strength, LIGHTING_ROUND_VALUE) ) + else + effect_r += 0 + effect_g += 0 + effect_b += 0 if(!T.affecting_lights) T.affecting_lights = list() @@ -161,12 +165,15 @@ /datum/light_source/proc/remove_lum() applied = 0 + var/i = 1 for(var/turf/T in effect_turf) if(T.affecting_lights) T.affecting_lights -= src if(T.lighting_overlay) - T.lighting_overlay.update_lumcount(-effect_r[T.lighting_overlay], -effect_g[T.lighting_overlay], -effect_b[T.lighting_overlay]) + T.lighting_overlay.update_lumcount(-effect_r[i], -effect_g[i], -effect_b[i]) + + i++ effect_r.Cut() effect_g.Cut()