mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-13 11:43:31 +00:00
Merge pull request #10070 from Mloc/lightwrite-2
Lighting overlay changes + optimizations
This commit is contained in:
@@ -324,7 +324,7 @@ Would like to add a law like "Law x is _______" where x = a number, and _____ is
|
|||||||
|
|
||||||
//AI laws
|
//AI laws
|
||||||
for(var/mob/living/silicon/ai/M in living_mob_list)
|
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/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/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")
|
var/what2pref = pick("SOFT", "WARM", "WET", "COLD", "ICY", "SEXY", "UGLY", "CUBAN")
|
||||||
|
|||||||
@@ -45,7 +45,6 @@
|
|||||||
if (!(XRAY in user.mutations))
|
if (!(XRAY in user.mutations))
|
||||||
user.mutations.Add(XRAY)
|
user.mutations.Add(XRAY)
|
||||||
user.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS)
|
user.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS)
|
||||||
user.see_in_dark = 8
|
|
||||||
user.see_invisible = SEE_INVISIBLE_LEVEL_TWO
|
user.see_invisible = SEE_INVISIBLE_LEVEL_TWO
|
||||||
|
|
||||||
if (!(COLD_RESISTANCE in user.mutations))
|
if (!(COLD_RESISTANCE in user.mutations))
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ AI MODULES
|
|||||||
|
|
||||||
if (comp.current.stat == 2 || comp.current.control_disabled == 1)
|
if (comp.current.stat == 2 || comp.current.control_disabled == 1)
|
||||||
usr << "Upload failed. No signal is being detected from the AI."
|
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."
|
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
|
else
|
||||||
src.transmitInstructions(comp.current, usr)
|
src.transmitInstructions(comp.current, usr)
|
||||||
|
|||||||
@@ -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)
|
for(var/mob/living/silicon/ai/M in mob_list)
|
||||||
if (M.stat == 2)
|
if (M.stat == 2)
|
||||||
usr << "Upload failed. No signal is being detected from the AI."
|
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."
|
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
|
else
|
||||||
M.add_ion_law(input)
|
M.add_ion_law(input)
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
#define LIGHTING_FALLOFF 1 // type of falloff to use for lighting; 1 for circular, 2 for square
|
#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_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_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_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
|
#define LIGHTING_LAYER 10 // drawing layer for lighting overlays
|
||||||
|
|||||||
@@ -143,15 +143,19 @@
|
|||||||
if(!strength) //Don't add turfs that aren't affected to the affected turfs.
|
if(!strength) //Don't add turfs that aren't affected to the affected turfs.
|
||||||
continue
|
continue
|
||||||
|
|
||||||
effect_r[T.lighting_overlay] = round(lum_r * strength, LIGHTING_ROUND_VALUE)
|
effect_r += round(lum_r * strength, LIGHTING_ROUND_VALUE)
|
||||||
effect_g[T.lighting_overlay] = round(lum_g * strength, LIGHTING_ROUND_VALUE)
|
effect_g += round(lum_g * strength, LIGHTING_ROUND_VALUE)
|
||||||
effect_b[T.lighting_overlay] = round(lum_b * strength, LIGHTING_ROUND_VALUE)
|
effect_b += round(lum_b * strength, LIGHTING_ROUND_VALUE)
|
||||||
|
|
||||||
T.lighting_overlay.update_lumcount(
|
T.lighting_overlay.update_lumcount(
|
||||||
round(lum_r * strength, LIGHTING_ROUND_VALUE),
|
round(lum_r * strength, LIGHTING_ROUND_VALUE),
|
||||||
round(lum_g * strength, LIGHTING_ROUND_VALUE),
|
round(lum_g * strength, LIGHTING_ROUND_VALUE),
|
||||||
round(lum_b * 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)
|
if(!T.affecting_lights)
|
||||||
T.affecting_lights = list()
|
T.affecting_lights = list()
|
||||||
@@ -161,12 +165,15 @@
|
|||||||
|
|
||||||
/datum/light_source/proc/remove_lum()
|
/datum/light_source/proc/remove_lum()
|
||||||
applied = 0
|
applied = 0
|
||||||
|
var/i = 1
|
||||||
for(var/turf/T in effect_turf)
|
for(var/turf/T in effect_turf)
|
||||||
if(T.affecting_lights)
|
if(T.affecting_lights)
|
||||||
T.affecting_lights -= src
|
T.affecting_lights -= src
|
||||||
|
|
||||||
if(T.lighting_overlay)
|
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_r.Cut()
|
||||||
effect_g.Cut()
|
effect_g.Cut()
|
||||||
|
|||||||
@@ -8,7 +8,6 @@
|
|||||||
icon_state = "light1"
|
icon_state = "light1"
|
||||||
layer = LIGHTING_LAYER
|
layer = LIGHTING_LAYER
|
||||||
invisibility = INVISIBILITY_LIGHTING
|
invisibility = INVISIBILITY_LIGHTING
|
||||||
blend_mode = BLEND_MULTIPLY
|
|
||||||
color = "#000000"
|
color = "#000000"
|
||||||
|
|
||||||
var/lum_r
|
var/lum_r
|
||||||
@@ -53,32 +52,31 @@
|
|||||||
lighting_update_overlays += src
|
lighting_update_overlays += src
|
||||||
|
|
||||||
/atom/movable/lighting_overlay/proc/update_overlay()
|
/atom/movable/lighting_overlay/proc/update_overlay()
|
||||||
|
var/turf/T = loc
|
||||||
|
|
||||||
|
if(istype(T)) //Incase we're not on a turf, pool ourselves, something happened.
|
||||||
|
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)
|
var/mx = max(lum_r, lum_g, lum_b)
|
||||||
. = 1 // factor
|
. = 1 // factor
|
||||||
if(mx > 1)
|
if(mx > 1)
|
||||||
. = 1/mx
|
. = 1/mx
|
||||||
#if LIGHTING_TRANSITIONS == 1
|
blend_mode = BLEND_MULTIPLY
|
||||||
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 * .)
|
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")
|
if(color != "#000000")
|
||||||
T.luminosity = 1
|
T.luminosity = 1
|
||||||
else //No light, set the turf's luminosity to 0 to remove it from view()
|
else //No light, set the turf's luminosity to 0 to remove it from view()
|
||||||
#if LIGHTING_TRANSITIONS == 1
|
|
||||||
spawn(LIGHTING_INTERVAL - 1)
|
|
||||||
T.luminosity = 0
|
T.luminosity = 0
|
||||||
#else
|
|
||||||
T.luminosity = 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
else
|
else
|
||||||
warning("A lighting overlay realised its loc was NOT a turf (actual loc: [loc][loc ? ", " + loc.type : ""]) in update_overlay() and got pooled!")
|
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)
|
qdel(src)
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
#undef LIGHTING_FALLOFF
|
#undef LIGHTING_FALLOFF
|
||||||
#undef LIGHTING_LAMBERTIAN
|
#undef LIGHTING_LAMBERTIAN
|
||||||
#undef LIGHTING_HEIGHT
|
#undef LIGHTING_HEIGHT
|
||||||
#undef LIGHTING_TRANSITIONS
|
|
||||||
|
|
||||||
#undef LIGHTING_RESOLUTION
|
#undef LIGHTING_RESOLUTION
|
||||||
#undef LIGHTING_LAYER
|
#undef LIGHTING_LAYER
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ var/global/list/image/ghost_sightless_images = list() //this is a list of images
|
|||||||
/mob/dead/observer/New(mob/body)
|
/mob/dead/observer/New(mob/body)
|
||||||
sight |= SEE_TURFS | SEE_MOBS | SEE_OBJS | SEE_SELF
|
sight |= SEE_TURFS | SEE_MOBS | SEE_OBJS | SEE_SELF
|
||||||
see_invisible = SEE_INVISIBLE_OBSERVER
|
see_invisible = SEE_INVISIBLE_OBSERVER
|
||||||
see_in_dark = 100
|
|
||||||
verbs += /mob/dead/observer/proc/dead_tele
|
verbs += /mob/dead/observer/proc/dead_tele
|
||||||
|
|
||||||
stat = DEAD
|
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()
|
/mob/dead/observer/proc/updateghostsight()
|
||||||
if (!seedarkness)
|
if (!seedarkness)
|
||||||
see_invisible = SEE_INVISIBLE_OBSERVER_NOLIGHTING
|
see_invisible = SEE_INVISIBLE_OBSERVER_NOLIGHTING
|
||||||
|
see_in_dark = 100
|
||||||
else
|
else
|
||||||
see_invisible = SEE_INVISIBLE_OBSERVER
|
see_invisible = SEE_INVISIBLE_OBSERVER
|
||||||
if (!ghostvision)
|
if (!ghostvision)
|
||||||
see_invisible = SEE_INVISIBLE_LIVING;
|
see_invisible = SEE_INVISIBLE_LIVING;
|
||||||
|
see_in_dark = 0
|
||||||
updateghostimages()
|
updateghostimages()
|
||||||
|
|
||||||
/proc/updateallghostimages()
|
/proc/updateallghostimages()
|
||||||
|
|||||||
@@ -70,7 +70,6 @@
|
|||||||
blind.layer = 0
|
blind.layer = 0
|
||||||
|
|
||||||
sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS
|
sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS
|
||||||
see_in_dark = 8
|
|
||||||
see_invisible = SEE_INVISIBLE_LEVEL_TWO
|
see_invisible = SEE_INVISIBLE_LEVEL_TWO
|
||||||
|
|
||||||
drop_r_hand()
|
drop_r_hand()
|
||||||
|
|||||||
@@ -15,7 +15,6 @@
|
|||||||
var/acceleration = 1
|
var/acceleration = 1
|
||||||
var/owner_follows_eye = 0
|
var/owner_follows_eye = 0
|
||||||
|
|
||||||
see_in_dark = 7
|
|
||||||
status_flags = GODMODE
|
status_flags = GODMODE
|
||||||
invisibility = INVISIBILITY_EYE
|
invisibility = INVISIBILITY_EYE
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
icon = 'icons/mob/blob.dmi'
|
icon = 'icons/mob/blob.dmi'
|
||||||
icon_state = "blob_spore_temp"
|
icon_state = "blob_spore_temp"
|
||||||
pass_flags = PASSBLOB
|
pass_flags = PASSBLOB
|
||||||
see_in_dark = 8
|
|
||||||
see_invisible = SEE_INVISIBLE_LEVEL_TWO
|
see_invisible = SEE_INVISIBLE_LEVEL_TWO
|
||||||
var/ghost_name = "Unknown"
|
var/ghost_name = "Unknown"
|
||||||
var/creating_blob = 0
|
var/creating_blob = 0
|
||||||
|
|||||||
@@ -120,13 +120,11 @@
|
|||||||
sight |= SEE_TURFS
|
sight |= SEE_TURFS
|
||||||
sight |= SEE_MOBS
|
sight |= SEE_MOBS
|
||||||
sight |= SEE_OBJS
|
sight |= SEE_OBJS
|
||||||
see_in_dark = 8
|
|
||||||
see_invisible = SEE_INVISIBLE_LEVEL_TWO
|
see_invisible = SEE_INVISIBLE_LEVEL_TWO
|
||||||
else if (stat != 2)
|
else if (stat != 2)
|
||||||
sight &= ~SEE_TURFS
|
sight &= ~SEE_TURFS
|
||||||
sight &= ~SEE_MOBS
|
sight &= ~SEE_MOBS
|
||||||
sight &= ~SEE_OBJS
|
sight &= ~SEE_OBJS
|
||||||
see_in_dark = 2
|
|
||||||
see_invisible = SEE_INVISIBLE_LIVING
|
see_invisible = SEE_INVISIBLE_LIVING
|
||||||
|
|
||||||
if (healths)
|
if (healths)
|
||||||
|
|||||||
@@ -204,13 +204,11 @@
|
|||||||
sight |= SEE_TURFS
|
sight |= SEE_TURFS
|
||||||
sight |= SEE_MOBS
|
sight |= SEE_MOBS
|
||||||
sight |= SEE_OBJS
|
sight |= SEE_OBJS
|
||||||
see_in_dark = 8
|
|
||||||
see_invisible = SEE_INVISIBLE_LEVEL_TWO
|
see_invisible = SEE_INVISIBLE_LEVEL_TWO
|
||||||
else if (stat != 2)
|
else if (stat != 2)
|
||||||
sight &= ~SEE_TURFS
|
sight &= ~SEE_TURFS
|
||||||
sight &= ~SEE_MOBS
|
sight &= ~SEE_MOBS
|
||||||
sight &= ~SEE_OBJS
|
sight &= ~SEE_OBJS
|
||||||
see_in_dark = 2
|
|
||||||
see_invisible = SEE_INVISIBLE_LIVING
|
see_invisible = SEE_INVISIBLE_LIVING
|
||||||
|
|
||||||
if (healths)
|
if (healths)
|
||||||
|
|||||||
@@ -1206,7 +1206,6 @@
|
|||||||
|
|
||||||
if( stat == DEAD )
|
if( stat == DEAD )
|
||||||
sight |= (SEE_TURFS|SEE_MOBS|SEE_OBJS)
|
sight |= (SEE_TURFS|SEE_MOBS|SEE_OBJS)
|
||||||
see_in_dark = 8
|
|
||||||
if(!druggy) see_invisible = SEE_INVISIBLE_LEVEL_TWO
|
if(!druggy) see_invisible = SEE_INVISIBLE_LEVEL_TWO
|
||||||
if(healths) healths.icon_state = "health7" //DEAD healthmeter
|
if(healths) healths.icon_state = "health7" //DEAD healthmeter
|
||||||
if(client)
|
if(client)
|
||||||
@@ -1229,12 +1228,9 @@
|
|||||||
|
|
||||||
else
|
else
|
||||||
sight &= ~(SEE_TURFS|SEE_MOBS|SEE_OBJS)
|
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)
|
if(XRAY in mutations)
|
||||||
sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS
|
sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS
|
||||||
see_in_dark = 8
|
|
||||||
if(!druggy) see_invisible = SEE_INVISIBLE_LEVEL_TWO
|
if(!druggy) see_invisible = SEE_INVISIBLE_LEVEL_TWO
|
||||||
|
|
||||||
if(seer==1)
|
if(seer==1)
|
||||||
|
|||||||
@@ -8,7 +8,6 @@
|
|||||||
language = "Sol Common" //todo?
|
language = "Sol Common" //todo?
|
||||||
unarmed_types = list(/datum/unarmed_attack/claws/strong, /datum/unarmed_attack/bite/sharp)
|
unarmed_types = list(/datum/unarmed_attack/claws/strong, /datum/unarmed_attack/bite/sharp)
|
||||||
light_dam = 2
|
light_dam = 2
|
||||||
darksight = 8
|
|
||||||
has_organ = list()
|
has_organ = list()
|
||||||
siemens_coefficient = 0
|
siemens_coefficient = 0
|
||||||
|
|
||||||
|
|||||||
@@ -99,7 +99,6 @@
|
|||||||
var/list/inherent_verbs // Species-specific verbs.
|
var/list/inherent_verbs // Species-specific verbs.
|
||||||
var/has_fine_manipulation = 1 // Can use small items.
|
var/has_fine_manipulation = 1 // Can use small items.
|
||||||
var/siemens_coefficient = 1 // The lower, the thicker the skin and better the insulation.
|
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/flags = 0 // Various specific features.
|
||||||
var/slowdown = 0 // Passive movement speed malus (or boost, if negative)
|
var/slowdown = 0 // Passive movement speed malus (or boost, if negative)
|
||||||
var/primitive_form // Lesser form, if any (ie. monkey for humans)
|
var/primitive_form // Lesser form, if any (ie. monkey for humans)
|
||||||
|
|||||||
@@ -10,7 +10,6 @@
|
|||||||
unarmed_types = list(/datum/unarmed_attack/slime_glomp)
|
unarmed_types = list(/datum/unarmed_attack/slime_glomp)
|
||||||
flags = IS_RESTRICTED | NO_BLOOD | NO_SCAN | NO_SLIP | NO_BREATHE
|
flags = IS_RESTRICTED | NO_BLOOD | NO_SCAN | NO_SLIP | NO_BREATHE
|
||||||
siemens_coefficient = 3
|
siemens_coefficient = 3
|
||||||
darksight = 3
|
|
||||||
|
|
||||||
blood_color = "#05FF9B"
|
blood_color = "#05FF9B"
|
||||||
flesh_color = "#05FFFB"
|
flesh_color = "#05FFFB"
|
||||||
|
|||||||
@@ -22,7 +22,6 @@
|
|||||||
tail_animation = 'icons/mob/species/unathi/tail.dmi'
|
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)
|
unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws, /datum/unarmed_attack/bite/sharp)
|
||||||
primitive_form = "Stok"
|
primitive_form = "Stok"
|
||||||
darksight = 3
|
|
||||||
gluttonous = 1
|
gluttonous = 1
|
||||||
|
|
||||||
blurb = "A heavily reptillian species, Unathi (or 'Sinta as they call themselves) hail from the \
|
blurb = "A heavily reptillian species, Unathi (or 'Sinta as they call themselves) hail from the \
|
||||||
@@ -73,7 +72,6 @@
|
|||||||
tail = "tajtail"
|
tail = "tajtail"
|
||||||
tail_animation = 'icons/mob/species/tajaran/tail.dmi'
|
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)
|
unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws, /datum/unarmed_attack/bite/sharp)
|
||||||
darksight = 8
|
|
||||||
slowdown = -1
|
slowdown = -1
|
||||||
brute_mod = 1.2
|
brute_mod = 1.2
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,6 @@
|
|||||||
update_icon = 0
|
update_icon = 0
|
||||||
nutrition = 700
|
nutrition = 700
|
||||||
|
|
||||||
see_in_dark = 8
|
|
||||||
update_slimes = 0
|
update_slimes = 0
|
||||||
|
|
||||||
// canstun and canweaken don't affect slimes because they ignore stun and weakened variables
|
// canstun and canweaken don't affect slimes because they ignore stun and weakened variables
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ var/list/ai_verbs_default = list(
|
|||||||
var/list/network = list("Exodus")
|
var/list/network = list("Exodus")
|
||||||
var/obj/machinery/camera/camera = null
|
var/obj/machinery/camera/camera = null
|
||||||
var/list/connected_robots = list()
|
var/list/connected_robots = list()
|
||||||
|
var/has_power = 0
|
||||||
var/aiRestorePowerRoutine = 0
|
var/aiRestorePowerRoutine = 0
|
||||||
var/viewalerts = 0
|
var/viewalerts = 0
|
||||||
var/icon/holo_icon//Default is assigned when AI is created.
|
var/icon/holo_icon//Default is assigned when AI is created.
|
||||||
|
|||||||
@@ -38,19 +38,18 @@
|
|||||||
src << "<span class='notice'><b>APU GENERATOR FAILURE! (System Damaged)</b></span>"
|
src << "<span class='notice'><b>APU GENERATOR FAILURE! (System Damaged)</b></span>"
|
||||||
stop_apu(1)
|
stop_apu(1)
|
||||||
|
|
||||||
var/blind = 0
|
has_power = 1
|
||||||
var/area/loc = null
|
var/area/loc = null
|
||||||
if (istype(T, /turf))
|
if (istype(T, /turf))
|
||||||
loc = T.loc
|
loc = T.loc
|
||||||
if (istype(loc, /area))
|
if (istype(loc, /area))
|
||||||
if (!loc.power_equip && !istype(src.loc,/obj/item) && !APU_power)
|
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_TURFS
|
||||||
src.sight |= SEE_MOBS
|
src.sight |= SEE_MOBS
|
||||||
src.sight |= SEE_OBJS
|
src.sight |= SEE_OBJS
|
||||||
src.see_in_dark = 8
|
|
||||||
src.see_invisible = SEE_INVISIBLE_LIVING
|
src.see_invisible = SEE_INVISIBLE_LIVING
|
||||||
|
|
||||||
if (aiRestorePowerRoutine==2)
|
if (aiRestorePowerRoutine==2)
|
||||||
@@ -77,12 +76,10 @@
|
|||||||
//Blind the AI
|
//Blind the AI
|
||||||
|
|
||||||
src.blind.screen_loc = "1,1 to 15,15"
|
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_TURFS
|
||||||
src.sight = src.sight&~SEE_MOBS
|
src.sight = src.sight&~SEE_MOBS
|
||||||
src.sight = src.sight&~SEE_OBJS
|
src.sight = src.sight&~SEE_OBJS
|
||||||
src.see_in_dark = 0
|
|
||||||
src.see_invisible = SEE_INVISIBLE_LIVING
|
src.see_invisible = SEE_INVISIBLE_LIVING
|
||||||
|
|
||||||
//Now to tell the AI why they're blind and dying slowly.
|
//Now to tell the AI why they're blind and dying slowly.
|
||||||
|
|||||||
@@ -162,13 +162,11 @@
|
|||||||
see_invisible = SEE_INVISIBLE_MINIMUM
|
see_invisible = SEE_INVISIBLE_MINIMUM
|
||||||
else if (src.sight_mode & BORGTHERM)
|
else if (src.sight_mode & BORGTHERM)
|
||||||
src.sight |= SEE_MOBS
|
src.sight |= SEE_MOBS
|
||||||
src.see_in_dark = 8
|
|
||||||
src.see_invisible = SEE_INVISIBLE_LEVEL_TWO
|
src.see_invisible = SEE_INVISIBLE_LEVEL_TWO
|
||||||
else if (src.stat != 2)
|
else if (src.stat != 2)
|
||||||
src.sight &= ~SEE_MOBS
|
src.sight &= ~SEE_MOBS
|
||||||
src.sight &= ~SEE_TURFS
|
src.sight &= ~SEE_TURFS
|
||||||
src.sight &= ~SEE_OBJS
|
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
|
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
|
// has a "invisible" value of 15
|
||||||
|
|
||||||
|
|||||||
@@ -150,7 +150,6 @@
|
|||||||
attacktext = "slashed"
|
attacktext = "slashed"
|
||||||
speed = -1
|
speed = -1
|
||||||
environment_smash = 1
|
environment_smash = 1
|
||||||
see_in_dark = 7
|
|
||||||
attack_sound = 'sound/weapons/rapidslice.ogg'
|
attack_sound = 'sound/weapons/rapidslice.ogg'
|
||||||
construct_spells = list(/spell/targeted/ethereal_jaunt/shift)
|
construct_spells = list(/spell/targeted/ethereal_jaunt/shift)
|
||||||
|
|
||||||
@@ -228,7 +227,6 @@
|
|||||||
attacktext = "violently stabbed"
|
attacktext = "violently stabbed"
|
||||||
speed = -1
|
speed = -1
|
||||||
environment_smash = 1
|
environment_smash = 1
|
||||||
see_in_dark = 7
|
|
||||||
attack_sound = 'sound/weapons/pierce.ogg'
|
attack_sound = 'sound/weapons/pierce.ogg'
|
||||||
|
|
||||||
construct_spells = list(
|
construct_spells = list(
|
||||||
|
|||||||
@@ -11,7 +11,6 @@
|
|||||||
emote_see = list("shakes their head", "shivers")
|
emote_see = list("shakes their head", "shivers")
|
||||||
speak_chance = 1
|
speak_chance = 1
|
||||||
turns_per_move = 5
|
turns_per_move = 5
|
||||||
see_in_dark = 6
|
|
||||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
|
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
|
||||||
response_help = "pets"
|
response_help = "pets"
|
||||||
response_disarm = "gently pushes aside"
|
response_disarm = "gently pushes aside"
|
||||||
|
|||||||
@@ -17,7 +17,6 @@
|
|||||||
response_help = "pets"
|
response_help = "pets"
|
||||||
response_disarm = "bops"
|
response_disarm = "bops"
|
||||||
response_harm = "kicks"
|
response_harm = "kicks"
|
||||||
see_in_dark = 5
|
|
||||||
mob_size = 8
|
mob_size = 8
|
||||||
|
|
||||||
var/obj/item/inventory_head
|
var/obj/item/inventory_head
|
||||||
|
|||||||
@@ -11,7 +11,6 @@
|
|||||||
emote_see = list("shakes its head", "stamps a foot", "glares around")
|
emote_see = list("shakes its head", "stamps a foot", "glares around")
|
||||||
speak_chance = 1
|
speak_chance = 1
|
||||||
turns_per_move = 5
|
turns_per_move = 5
|
||||||
see_in_dark = 6
|
|
||||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
|
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
|
||||||
meat_amount = 4
|
meat_amount = 4
|
||||||
response_help = "pets"
|
response_help = "pets"
|
||||||
@@ -95,7 +94,6 @@
|
|||||||
emote_see = list("shakes its head")
|
emote_see = list("shakes its head")
|
||||||
speak_chance = 1
|
speak_chance = 1
|
||||||
turns_per_move = 5
|
turns_per_move = 5
|
||||||
see_in_dark = 6
|
|
||||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
|
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
|
||||||
meat_amount = 6
|
meat_amount = 6
|
||||||
response_help = "pets"
|
response_help = "pets"
|
||||||
|
|||||||
@@ -13,7 +13,6 @@
|
|||||||
small = 1
|
small = 1
|
||||||
speak_chance = 1
|
speak_chance = 1
|
||||||
turns_per_move = 5
|
turns_per_move = 5
|
||||||
see_in_dark = 6
|
|
||||||
maxHealth = 5
|
maxHealth = 5
|
||||||
health = 5
|
health = 5
|
||||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
|
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
|
||||||
|
|||||||
@@ -12,7 +12,6 @@
|
|||||||
emote_see = list("stares ferociously", "stomps")
|
emote_see = list("stares ferociously", "stomps")
|
||||||
speak_chance = 1
|
speak_chance = 1
|
||||||
turns_per_move = 5
|
turns_per_move = 5
|
||||||
see_in_dark = 6
|
|
||||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/bearmeat
|
meat_type = /obj/item/weapon/reagent_containers/food/snacks/bearmeat
|
||||||
response_help = "pets"
|
response_help = "pets"
|
||||||
response_disarm = "gently pushes aside"
|
response_disarm = "gently pushes aside"
|
||||||
|
|||||||
@@ -15,7 +15,6 @@
|
|||||||
emote_hear = list("chitters")
|
emote_hear = list("chitters")
|
||||||
speak_chance = 5
|
speak_chance = 5
|
||||||
turns_per_move = 5
|
turns_per_move = 5
|
||||||
see_in_dark = 10
|
|
||||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/xenomeat
|
meat_type = /obj/item/weapon/reagent_containers/food/snacks/xenomeat
|
||||||
response_help = "pets"
|
response_help = "pets"
|
||||||
response_disarm = "gently pushes aside"
|
response_disarm = "gently pushes aside"
|
||||||
|
|||||||
@@ -12,7 +12,6 @@
|
|||||||
emote_see = list("looks around suspiciously.", "scratches it's arm.","putters around a bit.")
|
emote_see = list("looks around suspiciously.", "scratches it's arm.","putters around a bit.")
|
||||||
speak_chance = 15
|
speak_chance = 15
|
||||||
turns_per_move = 5
|
turns_per_move = 5
|
||||||
see_in_dark = 6
|
|
||||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/monkey
|
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/monkey
|
||||||
response_help = "pets"
|
response_help = "pets"
|
||||||
response_disarm = "gently pushes aside"
|
response_disarm = "gently pushes aside"
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
density = 1
|
density = 1
|
||||||
layer = 4.0
|
layer = 4.0
|
||||||
animate_movement = 2
|
animate_movement = 2
|
||||||
|
see_in_dark = 0
|
||||||
// flags = NOREACT
|
// flags = NOREACT
|
||||||
var/datum/mind/mind
|
var/datum/mind/mind
|
||||||
|
|
||||||
|
|||||||
@@ -252,7 +252,6 @@
|
|||||||
if (!(XRAY in H.mutations))
|
if (!(XRAY in H.mutations))
|
||||||
H.mutations.Add(XRAY)
|
H.mutations.Add(XRAY)
|
||||||
H.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS)
|
H.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS)
|
||||||
H.see_in_dark = 8
|
|
||||||
H.see_invisible = SEE_INVISIBLE_LEVEL_TWO
|
H.see_invisible = SEE_INVISIBLE_LEVEL_TWO
|
||||||
H << "\blue The walls suddenly disappear."
|
H << "\blue The walls suddenly disappear."
|
||||||
temp = "You have purchased a scrying orb, and gained x-ray vision."
|
temp = "You have purchased a scrying orb, and gained x-ray vision."
|
||||||
|
|||||||
@@ -55,7 +55,6 @@
|
|||||||
if (!(XRAY in user.mutations))
|
if (!(XRAY in user.mutations))
|
||||||
user.mutations.Add(XRAY)
|
user.mutations.Add(XRAY)
|
||||||
user.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS)
|
user.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS)
|
||||||
user.see_in_dark = 8
|
|
||||||
user.see_invisible = SEE_INVISIBLE_LEVEL_TWO
|
user.see_invisible = SEE_INVISIBLE_LEVEL_TWO
|
||||||
user << "\blue The walls suddenly disappear."
|
user << "\blue The walls suddenly disappear."
|
||||||
user.dna.mutantrace = "shadow"
|
user.dna.mutantrace = "shadow"
|
||||||
|
|||||||
Reference in New Issue
Block a user