mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-29 23:17:02 +01:00
Merge branch 'master' into findnreplace
This commit is contained in:
@@ -936,7 +936,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
|
||||
/mob/living/carbon/proc/can_eat(flags = 255)
|
||||
return 1
|
||||
|
||||
/mob/living/carbon/proc/eat(var/obj/item/weapon/reagent_containers/food/toEat, mob/user)
|
||||
/mob/living/carbon/proc/eat(var/obj/item/weapon/reagent_containers/food/toEat, mob/user, var/bitesize_override)
|
||||
if(!istype(toEat))
|
||||
return 0
|
||||
var/fullness = nutrition + 10
|
||||
@@ -953,7 +953,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
|
||||
else
|
||||
if(!forceFed(toEat, user, fullness))
|
||||
return 0
|
||||
consume(toEat)
|
||||
consume(toEat, bitesize_override)
|
||||
score_foodeaten++
|
||||
return 1
|
||||
|
||||
@@ -1006,7 +1006,8 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
|
||||
|
||||
/*TO DO - If/when stomach organs are introduced, override this at the human level sending the item to the stomach
|
||||
so that different stomachs can handle things in different ways VB*/
|
||||
/mob/living/carbon/proc/consume(var/obj/item/weapon/reagent_containers/food/toEat)
|
||||
/mob/living/carbon/proc/consume(var/obj/item/weapon/reagent_containers/food/toEat, var/bitesize_override)
|
||||
var/this_bite = bitesize_override ? bitesize_override : toEat.bitesize
|
||||
if(!toEat.reagents)
|
||||
return
|
||||
if(satiety > -200)
|
||||
@@ -1014,9 +1015,9 @@ so that different stomachs can handle things in different ways VB*/
|
||||
if(toEat.consume_sound)
|
||||
playsound(loc, toEat.consume_sound, rand(10,50), 1)
|
||||
if(toEat.reagents.total_volume)
|
||||
var/fraction = min(toEat.bitesize/toEat.reagents.total_volume, 1)
|
||||
var/fraction = min(this_bite/toEat.reagents.total_volume, 1)
|
||||
toEat.reagents.reaction(src, toEat.apply_type, fraction)
|
||||
toEat.reagents.trans_to(src, toEat.bitesize*toEat.transfer_efficiency)
|
||||
toEat.reagents.trans_to(src, this_bite*toEat.transfer_efficiency)
|
||||
|
||||
/mob/living/carbon/get_access()
|
||||
. = ..()
|
||||
|
||||
@@ -631,8 +631,6 @@
|
||||
AL.wires.UpdatePulsed(AIRLOCK_WIRE_DOOR_BOLTS)
|
||||
if(!AL.wires.IsIndexCut(AIRLOCK_WIRE_MAIN_POWER1))
|
||||
AL.wires.CutWireIndex(AIRLOCK_WIRE_MAIN_POWER1)
|
||||
if(!AL.wires.IsIndexCut(AIRLOCK_WIRE_MAIN_POWER2))
|
||||
AL.wires.CutWireIndex(AIRLOCK_WIRE_MAIN_POWER2)
|
||||
if(prob(mistake_chance) && !AL.wires.IsIndexCut(AIRLOCK_WIRE_SAFETY))
|
||||
AL.wires.CutWireIndex(AIRLOCK_WIRE_SAFETY)
|
||||
if(prob(mistake_chance) && !AL.wires.IsIndexCut(AIRLOCK_WIRE_ELECTRIFY))
|
||||
|
||||
@@ -958,13 +958,6 @@
|
||||
adjustToxLoss(-3)
|
||||
lastpuke = 0
|
||||
|
||||
//0.1% chance of playing a scary sound to someone who's in complete darkness
|
||||
if(isturf(loc) && rand(1,1000) == 1)
|
||||
var/turf/currentTurf = loc
|
||||
var/atom/movable/lighting_overlay/L = locate(/atom/movable/lighting_overlay) in currentTurf
|
||||
if(L && L.lum_r + L.lum_g + L.lum_b == 0)
|
||||
playsound_local(src,pick(scarySounds),50, 1, -1)
|
||||
|
||||
/mob/living/carbon/human/handle_changeling()
|
||||
if(mind)
|
||||
if(mind.changeling)
|
||||
|
||||
@@ -56,7 +56,8 @@
|
||||
reagent_tag = PROCESS_ORG
|
||||
base_color = "#066000"
|
||||
//Default styles for created mobs.
|
||||
default_hair = "Unathi Horns"
|
||||
default_headacc = "Simple"
|
||||
default_headacc_colour = "#404040"
|
||||
butt_sprite = "unathi"
|
||||
|
||||
has_organ = list(
|
||||
@@ -214,6 +215,9 @@
|
||||
dietflags = DIET_HERB
|
||||
flesh_color = "#8CD7A3"
|
||||
blood_color = "#1D2CBF"
|
||||
base_color = "#38b661" //RGB: 56, 182, 97.
|
||||
default_hair_colour = "#38b661"
|
||||
eyes = "skrell_eyes_s"
|
||||
//Default styles for created mobs.
|
||||
default_hair = "Skrell Male Tentacles"
|
||||
reagent_tag = PROCESS_ORG
|
||||
@@ -257,6 +261,8 @@
|
||||
smell.<br/><br/>Most humans will never meet a Vox raider, instead learning of this insular species through \
|
||||
dealing with their traders and merchants; those that do rarely enjoy the experience."
|
||||
|
||||
brute_mod = 1.2 //20% more brute damage. Fragile bird bones.
|
||||
|
||||
warning_low_pressure = 50
|
||||
hazard_low_pressure = 0
|
||||
|
||||
@@ -481,11 +487,13 @@
|
||||
|
||||
flags = IS_WHITELISTED
|
||||
clothing_flags = HAS_SOCKS
|
||||
bodyflags = FEET_CLAWS
|
||||
eyes = "kidan_eyes"
|
||||
bodyflags = FEET_CLAWS | HAS_HEAD_ACCESSORY
|
||||
eyes = "kidan_eyes_s"
|
||||
dietflags = DIET_HERB
|
||||
blood_color = "#FB9800"
|
||||
reagent_tag = PROCESS_ORG
|
||||
//Default styles for created mobs.
|
||||
default_headacc = "Normal Antennae"
|
||||
butt_sprite = "kidan"
|
||||
|
||||
has_organ = list(
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
if(dronefab)
|
||||
return
|
||||
|
||||
for(var/obj/machinery/drone_fabricator/fab in oview(3,src))
|
||||
for(var/obj/machinery/drone_fabricator/fab in get_area(src))
|
||||
|
||||
if(fab.stat & NOPOWER)
|
||||
continue
|
||||
|
||||
@@ -229,7 +229,7 @@
|
||||
//Different classes of items give different commodities.
|
||||
if(istype(W,/obj/item/weapon/cigbutt))
|
||||
stored_comms["plastic"]++
|
||||
else if(istype(W,/obj/effect/spider/spiderling))
|
||||
else if(istype(W,/obj/structure/spider/spiderling))
|
||||
stored_comms["wood"]++
|
||||
stored_comms["wood"]++
|
||||
stored_comms["plastic"]++
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
|
||||
if(prob(5)) //Spawns foam!
|
||||
visible_message("<span class='danger'>[src] whirs and bubbles violently, before releasing a plume of froth!</span>")
|
||||
new /obj/effect/effect/foam(loc)
|
||||
new /obj/structure/foam(loc)
|
||||
|
||||
else if(prob(5))
|
||||
audible_message("[src] makes an excited beeping booping sound!")
|
||||
|
||||
@@ -72,6 +72,13 @@
|
||||
harmbaton = 1
|
||||
emagged = 2
|
||||
|
||||
/mob/living/simple_animal/bot/secbot/armsky
|
||||
name = "Sergeant-at-Armsky"
|
||||
health = 45
|
||||
idcheck = 1
|
||||
arrest_type = 1
|
||||
weaponscheck = 1
|
||||
|
||||
/mob/living/simple_animal/bot/secbot/New()
|
||||
..()
|
||||
icon_state = "[base_icon][on]"
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
for(var/direction in shuffle(list(1,2,4,8,5,6,9,10)))
|
||||
var/step = get_step(src, direction)
|
||||
if(step)
|
||||
if(locate(/obj/effect/spacevine) in step)
|
||||
if(locate(/obj/structure/spacevine) in step)
|
||||
Move(step, get_dir(src, step))
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/goat/handle_automated_action()
|
||||
@@ -47,7 +47,7 @@
|
||||
LoseTarget()
|
||||
src.visible_message("<span class='notice'>[src] calms down.</span>")
|
||||
|
||||
var/obj/effect/spacevine/SV = locate(/obj/effect/spacevine) in loc
|
||||
var/obj/structure/spacevine/SV = locate(/obj/structure/spacevine) in loc
|
||||
if(SV)
|
||||
SV.eat(src)
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
/mob/living/simple_animal/hostile/retaliate/goat/Move()
|
||||
..()
|
||||
if(!stat)
|
||||
var/obj/effect/spacevine/SV = locate(/obj/effect/spacevine) in loc
|
||||
var/obj/structure/spacevine/SV = locate(/obj/structure/spacevine) in loc
|
||||
if(SV)
|
||||
SV.eat(src)
|
||||
|
||||
|
||||
@@ -116,7 +116,7 @@
|
||||
GiveUp(C)
|
||||
return
|
||||
//second, spin a sticky spiderweb on this tile
|
||||
var/obj/effect/spider/stickyweb/W = locate() in get_turf(src)
|
||||
var/obj/structure/spider/stickyweb/W = locate() in get_turf(src)
|
||||
if(!W)
|
||||
Web()
|
||||
else
|
||||
@@ -157,7 +157,7 @@
|
||||
stop_automated_movement = 1
|
||||
spawn(40)
|
||||
if(busy == SPINNING_WEB && src.loc == T)
|
||||
new /obj/effect/spider/stickyweb(T)
|
||||
new /obj/structure/spider/stickyweb(T)
|
||||
busy = 0
|
||||
stop_automated_movement = 0
|
||||
|
||||
@@ -187,7 +187,7 @@
|
||||
spawn(50)
|
||||
if(busy == SPINNING_COCOON)
|
||||
if(cocoon_target && istype(cocoon_target.loc, /turf) && get_dist(src,cocoon_target) <= 1)
|
||||
var/obj/effect/spider/cocoon/C = new(cocoon_target.loc)
|
||||
var/obj/structure/spider/cocoon/C = new(cocoon_target.loc)
|
||||
var/large_cocoon = 0
|
||||
C.pixel_x = cocoon_target.pixel_x
|
||||
C.pixel_y = cocoon_target.pixel_y
|
||||
@@ -223,7 +223,7 @@
|
||||
set category = "Spider"
|
||||
set desc = "Lay a clutch of eggs, but you must wrap a creature for feeding first."
|
||||
|
||||
var/obj/effect/spider/eggcluster/E = locate() in get_turf(src)
|
||||
var/obj/structure/spider/eggcluster/E = locate() in get_turf(src)
|
||||
if(E)
|
||||
to_chat(src, "<span class='notice'>There is already a cluster of eggs here!</span>")
|
||||
else if(!fed)
|
||||
@@ -236,7 +236,7 @@
|
||||
if(busy == LAYING_EGGS)
|
||||
E = locate() in get_turf(src)
|
||||
if(!E)
|
||||
var/obj/effect/spider/eggcluster/C = new /obj/effect/spider/eggcluster(src.loc)
|
||||
var/obj/structure/spider/eggcluster/C = new /obj/structure/spider/eggcluster(src.loc)
|
||||
C.faction = faction
|
||||
C.master_commander = master_commander
|
||||
if(ckey)
|
||||
|
||||
@@ -90,6 +90,17 @@
|
||||
var/mob/living/simple_animal/hostile/poison/terror_spider/queen/user = owner
|
||||
user.QueenFakeLings()
|
||||
|
||||
// ---------- EMPRESS
|
||||
|
||||
/datum/action/innate/terrorspider/queen/empress/empresserase
|
||||
name = "Erase Brood"
|
||||
icon_icon = 'icons/effects/blood.dmi'
|
||||
button_icon_state = "mgibbl1"
|
||||
|
||||
/datum/action/innate/terrorspider/queen/empress/empresserase/Activate()
|
||||
var/mob/living/simple_animal/hostile/poison/terror_spider/queen/empress/user = owner
|
||||
user.EraseBrood()
|
||||
|
||||
// ---------- WEB
|
||||
|
||||
/mob/living/simple_animal/hostile/poison/terror_spider/proc/Web(var/thick = 0)
|
||||
@@ -101,16 +112,20 @@
|
||||
else if(istype(loc, /turf/space))
|
||||
to_chat(src, "<span class='danger'>Webs cannot be spun in space.</span>")
|
||||
else
|
||||
var/obj/effect/spider/terrorweb/T = locate() in get_turf(src)
|
||||
var/obj/structure/spider/terrorweb/T = locate() in get_turf(src)
|
||||
if(T)
|
||||
to_chat(src, "<span class='danger'>There is already a web here.</span>")
|
||||
else
|
||||
var/obj/effect/spider/terrorweb/W = new /obj/effect/spider/terrorweb(loc)
|
||||
var/obj/structure/spider/terrorweb/W = new /obj/structure/spider/terrorweb(loc)
|
||||
W.creator_ckey = ckey
|
||||
if(thick)
|
||||
W.opacity = 1
|
||||
W.name = "thick terror web"
|
||||
if(web_infects)
|
||||
W.infectious = 1
|
||||
W.name = "sharp terror web"
|
||||
|
||||
/obj/effect/spider/terrorweb
|
||||
/obj/structure/spider/terrorweb
|
||||
name = "terror web"
|
||||
desc = "it's stringy and sticky"
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
@@ -119,19 +134,20 @@
|
||||
health = 20 // two welders, or one laser shot (15 for the normal spider webs)
|
||||
icon_state = "stickyweb1"
|
||||
var/creator_ckey = null
|
||||
var/infectious = 0
|
||||
|
||||
/obj/effect/spider/terrorweb/New()
|
||||
/obj/structure/spider/terrorweb/New()
|
||||
..()
|
||||
if(prob(50))
|
||||
icon_state = "stickyweb2"
|
||||
|
||||
/obj/effect/spider/terrorweb/proc/DeCloakNearby()
|
||||
/obj/structure/spider/terrorweb/proc/DeCloakNearby()
|
||||
for(var/mob/living/simple_animal/hostile/poison/terror_spider/gray/G in view(6,src))
|
||||
if(!G.ckey && G.stat != DEAD)
|
||||
G.GrayDeCloak()
|
||||
G.Aggro()
|
||||
|
||||
/obj/effect/spider/terrorweb/CanPass(atom/movable/mover, turf/target)
|
||||
/obj/structure/spider/terrorweb/CanPass(atom/movable/mover, turf/target)
|
||||
if(istype(mover, /mob/living/simple_animal/hostile/poison/terror_spider))
|
||||
return 1
|
||||
if(istype(mover, /obj/item/projectile/terrorqueenspit))
|
||||
@@ -146,8 +162,14 @@
|
||||
M.Weaken(4) // 8 seconds.
|
||||
DeCloakNearby()
|
||||
if(iscarbon(mover))
|
||||
var/mob/living/carbon/C = mover
|
||||
if(!IsTSInfected(C) && infectious)
|
||||
var/inject_target = pick("chest","head")
|
||||
if(C.can_inject(null, 0, inject_target, 0))
|
||||
to_chat(C, "<span class='danger'>[src] slices into you!</span>")
|
||||
new /obj/item/organ/internal/body_egg/terror_eggs(C)
|
||||
spawn(70)
|
||||
if(mover.loc == loc)
|
||||
if(C.loc == loc)
|
||||
qdel(src)
|
||||
return 1
|
||||
else
|
||||
@@ -156,7 +178,7 @@
|
||||
return prob(20)
|
||||
return ..()
|
||||
|
||||
/obj/effect/spider/terrorweb/bullet_act(obj/item/projectile/Proj)
|
||||
/obj/structure/spider/terrorweb/bullet_act(obj/item/projectile/Proj)
|
||||
if(Proj.damage_type != BRUTE && Proj.damage_type != BURN)
|
||||
visible_message("<span class='danger'>[src] is undamaged by [Proj]!</span>")
|
||||
// Webs don't care about disablers, tasers, etc. Or toxin damage. They're organic, but not alive.
|
||||
@@ -174,7 +196,7 @@
|
||||
choices += L
|
||||
for(var/obj/O in oview(1,src))
|
||||
if(Adjacent(O) && !O.anchored)
|
||||
if(!istype(O, /obj/effect/spider/terrorweb) && !istype(O, /obj/effect/spider/cocoon) && !istype(O, /obj/effect/spider/spiderling/terror_spiderling))
|
||||
if(!istype(O, /obj/structure/spider/terrorweb) && !istype(O, /obj/structure/spider/cocoon) && !istype(O, /obj/structure/spider/spiderling/terror_spiderling))
|
||||
choices += O
|
||||
if(choices.len)
|
||||
cocoon_target = input(src,"What do you wish to cocoon?") in null|choices
|
||||
@@ -193,16 +215,17 @@
|
||||
if(do_after(src, 40, target = cocoon_target.loc))
|
||||
if(busy == SPINNING_COCOON)
|
||||
if(cocoon_target && isturf(cocoon_target.loc) && get_dist(src,cocoon_target) <= 1)
|
||||
var/obj/effect/spider/cocoon/C = new(cocoon_target.loc)
|
||||
var/obj/structure/spider/cocoon/C = new(cocoon_target.loc)
|
||||
var/large_cocoon = 0
|
||||
C.pixel_x = cocoon_target.pixel_x
|
||||
C.pixel_y = cocoon_target.pixel_y
|
||||
for(var/obj/O in C.loc)
|
||||
if(istype(O, /obj/item))
|
||||
O.loc = C
|
||||
else if(istype(O, /obj/machinery) || istype(O, /obj/structure))
|
||||
O.loc = C
|
||||
large_cocoon = 1
|
||||
if(!O.anchored)
|
||||
if(istype(O, /obj/item))
|
||||
O.loc = C
|
||||
else if(istype(O, /obj/machinery) || istype(O, /obj/structure))
|
||||
O.loc = C
|
||||
large_cocoon = 1
|
||||
for(var/mob/living/L in C.loc)
|
||||
if(istype(L, /mob/living/simple_animal/hostile/poison/terror_spider))
|
||||
continue
|
||||
@@ -228,16 +251,17 @@
|
||||
stop_automated_movement = 0
|
||||
|
||||
/mob/living/simple_animal/hostile/poison/terror_spider/proc/DoVentSmash()
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/P in view(1,src))
|
||||
if(P.welded)
|
||||
P.welded = 0
|
||||
P.update_icon()
|
||||
visible_message("<span class='danger'>[src] smashes the welded cover off [P]!</span>")
|
||||
return
|
||||
for(var/obj/machinery/atmospherics/unary/vent_scrubber/C in view(1,src))
|
||||
if(C.welded)
|
||||
C.welded = 0
|
||||
C.update_icon()
|
||||
visible_message("<span class='danger'>[src] smashes the welded cover off [C]!</span>")
|
||||
return
|
||||
to_chat(src, "<span class='danger'>There is no unwelded vent close enough to do this.</span>")
|
||||
if(do_after(src, 40, target = loc))
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/P in view(1, src))
|
||||
if(P.welded)
|
||||
P.welded = 0
|
||||
P.update_icon()
|
||||
P.visible_message("<span class='danger'>[src] smashes the welded cover off [P]!</span>")
|
||||
return
|
||||
for(var/obj/machinery/atmospherics/unary/vent_scrubber/C in view(1, src))
|
||||
if(C.welded)
|
||||
C.welded = 0
|
||||
C.update_icon()
|
||||
C.visible_message("<span class='danger'>[src] smashes the welded cover off [C]!</span>")
|
||||
return
|
||||
to_chat(src, "<span class='danger'>There is no welded vent or scrubber close enough to do this.</span>")
|
||||
@@ -31,16 +31,3 @@
|
||||
M.EyeBlurry(6)
|
||||
M.Paralyse(5)
|
||||
..()
|
||||
|
||||
// Terror Spider, Queen Toxin
|
||||
|
||||
/datum/reagent/terror_queen_toxin
|
||||
name = "Terror Queen venom"
|
||||
id = "terror_queen_toxin"
|
||||
description = "A royally potent venom."
|
||||
color = "#CF3600"
|
||||
metabolization_rate = 2
|
||||
|
||||
/datum/reagent/terror_queen_toxin/on_mob_life(mob/living/M)
|
||||
// make them hallucinate a lot, like a changeling sting
|
||||
M.AdjustHallucinate(50, bound_upper = 400)
|
||||
@@ -24,9 +24,16 @@
|
||||
rapid = 1
|
||||
canlay = 1000
|
||||
spider_tier = TS_TIER_5
|
||||
projectiletype = /obj/item/projectile/terrorqueenspit/empress
|
||||
var/datum/action/innate/terrorspider/queen/empress/empresslings/empresslings_action
|
||||
var/datum/action/innate/terrorspider/queen/empress/empresserase/empresserase_action
|
||||
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
|
||||
/mob/living/simple_animal/hostile/poison/terror_spider/queen/empress/New()
|
||||
..()
|
||||
empresserase_action = new()
|
||||
empresserase_action.Grant(src)
|
||||
|
||||
/mob/living/simple_animal/hostile/poison/terror_spider/queen/empress/handle_automated_action()
|
||||
return
|
||||
|
||||
@@ -67,7 +74,7 @@
|
||||
var/numlings = input("How many?") as null|anything in list(10, 20, 30, 40, 50)
|
||||
var/sbpc = input("%chance to be stillborn?") as null|anything in list(0, 25, 50, 75, 100)
|
||||
for(var/i=0, i<numlings, i++)
|
||||
var/obj/effect/spider/spiderling/terror_spiderling/S = new /obj/effect/spider/spiderling/terror_spiderling(get_turf(src))
|
||||
var/obj/structure/spider/spiderling/terror_spiderling/S = new /obj/structure/spider/spiderling/terror_spiderling(get_turf(src))
|
||||
S.grow_as = pick(/mob/living/simple_animal/hostile/poison/terror_spider/red, \
|
||||
/mob/living/simple_animal/hostile/poison/terror_spider/gray, \
|
||||
/mob/living/simple_animal/hostile/poison/terror_spider/green, \
|
||||
@@ -84,9 +91,14 @@
|
||||
if(T.spider_tier < spider_tier)
|
||||
T.degenerate = 1
|
||||
to_chat(T, "<span class='userdanger'>Through the hivemind, the raw power of [src] floods into your body, burning it from the inside out!</span>")
|
||||
for(var/obj/effect/spider/eggcluster/terror_eggcluster/T in ts_egg_list)
|
||||
for(var/obj/structure/spider/eggcluster/terror_eggcluster/T in ts_egg_list)
|
||||
qdel(T)
|
||||
for(var/obj/effect/spider/spiderling/terror_spiderling/T in ts_spiderling_list)
|
||||
for(var/obj/structure/spider/spiderling/terror_spiderling/T in ts_spiderling_list)
|
||||
T.stillborn = 1
|
||||
to_chat(src, "<span class='userdanger'>Brood will die off shortly.</span>")
|
||||
to_chat(src, "<span class='userdanger'>All Terror Spiders, except yourself, will die off shortly.</span>")
|
||||
|
||||
|
||||
/obj/item/projectile/terrorqueenspit/empress
|
||||
damage_type = BURN
|
||||
damage = 30
|
||||
bonus_tox = 0
|
||||
@@ -119,7 +119,7 @@
|
||||
GrayCloak()
|
||||
else
|
||||
// otherwise, pick one of the valid turfs with no web to create a web there.
|
||||
new /obj/effect/spider/terrorweb(pick(g_turfs_valid))
|
||||
new /obj/structure/spider/terrorweb(pick(g_turfs_valid))
|
||||
visible_message("<span class='notice'>[src] spins a web.</span>")
|
||||
else
|
||||
if(invisibility == SEE_INVISIBLE_LEVEL_ONE)
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
greeneggs_action.Grant(src)
|
||||
|
||||
/mob/living/simple_animal/hostile/poison/terror_spider/green/proc/DoLayGreenEggs()
|
||||
var/obj/effect/spider/eggcluster/E = locate() in get_turf(src)
|
||||
var/obj/structure/spider/eggcluster/E = locate() in get_turf(src)
|
||||
if(E)
|
||||
to_chat(src, "<span class='notice'>There is already a cluster of eggs here!</span>")
|
||||
else if(fed < feedings_to_lay)
|
||||
|
||||
@@ -46,10 +46,10 @@
|
||||
if(T.stat != DEAD && !T.spider_placed && spider_awaymission == T.spider_awaymission)
|
||||
if(T.type == specific_type)
|
||||
numspiders += 1
|
||||
for(var/obj/effect/spider/eggcluster/terror_eggcluster/E in ts_egg_list)
|
||||
for(var/obj/structure/spider/eggcluster/terror_eggcluster/E in ts_egg_list)
|
||||
if(E.spiderling_type == specific_type && E.z == z)
|
||||
numspiders += E.spiderling_number
|
||||
for(var/obj/effect/spider/spiderling/terror_spiderling/L in ts_spiderling_list)
|
||||
for(var/obj/structure/spider/spiderling/terror_spiderling/L in ts_spiderling_list)
|
||||
if(!L.stillborn && L.grow_as == specific_type && L.z == z)
|
||||
numspiders += 1
|
||||
return numspiders
|
||||
@@ -36,7 +36,7 @@
|
||||
if(canspawn)
|
||||
canspawn = 0
|
||||
for(var/i in 0 to 30)
|
||||
var/obj/effect/spider/spiderling/terror_spiderling/S = new /obj/effect/spider/spiderling/terror_spiderling(get_turf(src))
|
||||
var/obj/structure/spider/spiderling/terror_spiderling/S = new /obj/structure/spider/spiderling/terror_spiderling(get_turf(src))
|
||||
S.grow_as = pick(/mob/living/simple_animal/hostile/poison/terror_spider/red, /mob/living/simple_animal/hostile/poison/terror_spider/gray)
|
||||
if(prob(66))
|
||||
S.stillborn = 1
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
var/lastnestsetup = 0
|
||||
var/neststep = 0
|
||||
var/hasnested = 0
|
||||
var/spider_max_per_nest = 20 // above this, queen stops spawning more, and declares war.
|
||||
var/spider_max_per_nest = 25 // above this, AI queens become stable
|
||||
var/canlay = 4 // main counter for egg-laying ability! # = num uses, incremented at intervals
|
||||
var/eggslaid = 0
|
||||
var/spider_can_fakelings = 3 // spawns defective spiderlings that don't grow up, used to freak out crew, atmosphere
|
||||
@@ -153,7 +153,7 @@
|
||||
if(3)
|
||||
if(world.time > (spider_lastspawn + spider_spawnfrequency))
|
||||
if(prob(20))
|
||||
var/obj/effect/spider/eggcluster/terror_eggcluster/N = locate() in get_turf(src)
|
||||
var/obj/structure/spider/eggcluster/terror_eggcluster/N = locate() in get_turf(src)
|
||||
if(!N)
|
||||
spider_lastspawn = world.time
|
||||
DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/green, 2, 0)
|
||||
@@ -161,7 +161,7 @@
|
||||
if(4)
|
||||
if(world.time > (spider_lastspawn + spider_spawnfrequency))
|
||||
if(prob(20))
|
||||
var/obj/effect/spider/eggcluster/terror_eggcluster/N = locate() in get_turf(src)
|
||||
var/obj/structure/spider/eggcluster/terror_eggcluster/N = locate() in get_turf(src)
|
||||
if(!N)
|
||||
spider_lastspawn = world.time
|
||||
DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/red, 2, 1)
|
||||
@@ -169,7 +169,7 @@
|
||||
if(5)
|
||||
if(world.time > (spider_lastspawn + spider_spawnfrequency))
|
||||
if(prob(20))
|
||||
var/obj/effect/spider/eggcluster/terror_eggcluster/N = locate() in get_turf(src)
|
||||
var/obj/structure/spider/eggcluster/terror_eggcluster/N = locate() in get_turf(src)
|
||||
if(!N)
|
||||
if(!spider_awaymission)
|
||||
QueenFakeLings()
|
||||
@@ -251,6 +251,8 @@
|
||||
I.flicker()
|
||||
|
||||
/mob/living/simple_animal/hostile/poison/terror_spider/queen/proc/LayQueenEggs()
|
||||
if(stat == DEAD)
|
||||
return
|
||||
if(!hasnested)
|
||||
to_chat(src, "<span class='danger'>You must nest before doing this.</span>")
|
||||
return
|
||||
@@ -329,7 +331,7 @@
|
||||
spider_can_fakelings--
|
||||
var/numlings = 15
|
||||
for(var/i in 1 to numlings)
|
||||
var/obj/effect/spider/spiderling/terror_spiderling/S = new /obj/effect/spider/spiderling/terror_spiderling(get_turf(src))
|
||||
var/obj/structure/spider/spiderling/terror_spiderling/S = new /obj/structure/spider/spiderling/terror_spiderling(get_turf(src))
|
||||
S.grow_as = /mob/living/simple_animal/hostile/poison/terror_spider/red
|
||||
S.stillborn = 1
|
||||
S.name = "Evil-Looking Spiderling"
|
||||
@@ -344,12 +346,13 @@
|
||||
damage = 0
|
||||
icon_state = "toxin"
|
||||
damage_type = TOX
|
||||
var/bonus_tox = 30
|
||||
|
||||
/obj/item/projectile/terrorqueenspit/on_hit(mob/living/carbon/target)
|
||||
if(ismob(target))
|
||||
var/mob/living/L = target
|
||||
if(L.reagents)
|
||||
if(L.can_inject(null, 0, "chest", 0))
|
||||
L.reagents.add_reagent("terror_queen_toxin", 15)
|
||||
L.Hallucinate(400)
|
||||
if(!isterrorspider(L))
|
||||
L.adjustToxLoss(30)
|
||||
L.adjustToxLoss(bonus_tox)
|
||||
@@ -54,6 +54,6 @@
|
||||
if(health > (maxHealth/2))
|
||||
enrage = 1
|
||||
visible_message("<span class='notice'>[src] retracts its fangs a little.</span>")
|
||||
melee_damage_lower = melee_damage_lower_rage0
|
||||
melee_damage_upper = melee_damage_upper_rage0
|
||||
melee_damage_lower = melee_damage_lower_rage1
|
||||
melee_damage_upper = melee_damage_upper_rage1
|
||||
..()
|
||||
@@ -3,7 +3,7 @@
|
||||
// ----------------- TERROR SPIDERS: SPIDERLINGS (USED BY GREEN, WHITE, QUEEN AND MOTHER TYPES)
|
||||
// --------------------------------------------------------------------------------
|
||||
|
||||
/obj/effect/spider/spiderling/terror_spiderling
|
||||
/obj/structure/spider/spiderling/terror_spiderling
|
||||
name = "spiderling"
|
||||
desc = "A fast-moving tiny spider, prone to making aggressive hissing sounds. Hope it doesn't grow up."
|
||||
icon_state = "spiderling"
|
||||
@@ -17,15 +17,15 @@
|
||||
var/list/enemies = list()
|
||||
var/immediate_ventcrawl = 0
|
||||
|
||||
/obj/effect/spider/spiderling/terror_spiderling/New()
|
||||
/obj/structure/spider/spiderling/terror_spiderling/New()
|
||||
..()
|
||||
ts_spiderling_list += src
|
||||
|
||||
/obj/effect/spider/spiderling/terror_spiderling/Destroy()
|
||||
/obj/structure/spider/spiderling/terror_spiderling/Destroy()
|
||||
ts_spiderling_list -= src
|
||||
return ..()
|
||||
|
||||
/obj/effect/spider/spiderling/terror_spiderling/Bump(atom/A)
|
||||
/obj/structure/spider/spiderling/terror_spiderling/Bump(atom/A)
|
||||
if(istype(A, /obj/structure/table))
|
||||
forceMove(A.loc)
|
||||
else if(istype(A, /obj/machinery/recharge_station))
|
||||
@@ -33,7 +33,7 @@
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/effect/spider/spiderling/terror_spiderling/process()
|
||||
/obj/structure/spider/spiderling/terror_spiderling/process()
|
||||
if(travelling_in_vent)
|
||||
if(isturf(loc))
|
||||
travelling_in_vent = 0
|
||||
@@ -104,7 +104,7 @@
|
||||
|
||||
/mob/living/simple_animal/hostile/poison/terror_spider/proc/DoLayTerrorEggs(lay_type, lay_number, lay_crawl)
|
||||
stop_automated_movement = 1
|
||||
var/obj/effect/spider/eggcluster/terror_eggcluster/C = new /obj/effect/spider/eggcluster/terror_eggcluster(get_turf(src))
|
||||
var/obj/structure/spider/eggcluster/terror_eggcluster/C = new /obj/structure/spider/eggcluster/terror_eggcluster(get_turf(src))
|
||||
C.spiderling_type = lay_type
|
||||
C.spiderling_number = lay_number
|
||||
C.spiderling_ventcrawl = lay_crawl
|
||||
@@ -118,7 +118,7 @@
|
||||
spawn(10)
|
||||
stop_automated_movement = 0
|
||||
|
||||
/obj/effect/spider/eggcluster/terror_eggcluster
|
||||
/obj/structure/spider/eggcluster/terror_eggcluster
|
||||
name = "terror egg cluster"
|
||||
desc = "A cluster of tiny spider eggs. They pulse with a strong inner life, and appear to have sharp thorns on the sides."
|
||||
icon_state = "eggs"
|
||||
@@ -130,7 +130,7 @@
|
||||
var/spiderling_ventcrawl = 1
|
||||
var/list/enemies = list()
|
||||
|
||||
/obj/effect/spider/eggcluster/terror_eggcluster/New()
|
||||
/obj/structure/spider/eggcluster/terror_eggcluster/New()
|
||||
..()
|
||||
ts_egg_list += src
|
||||
spawn(50)
|
||||
@@ -153,16 +153,16 @@
|
||||
else if(spiderling_type == /mob/living/simple_animal/hostile/poison/terror_spider/queen)
|
||||
name = "queen of terror eggs"
|
||||
|
||||
/obj/effect/spider/eggcluster/terror_eggcluster/Destroy()
|
||||
/obj/structure/spider/eggcluster/terror_eggcluster/Destroy()
|
||||
ts_egg_list -= src
|
||||
return ..()
|
||||
|
||||
/obj/effect/spider/eggcluster/terror_eggcluster/process()
|
||||
/obj/structure/spider/eggcluster/terror_eggcluster/process()
|
||||
amount_grown += rand(0,2)
|
||||
if(amount_grown >= 100)
|
||||
var/num = spiderling_number
|
||||
for(var/i=0, i<num, i++)
|
||||
var/obj/effect/spider/spiderling/terror_spiderling/S = new /obj/effect/spider/spiderling/terror_spiderling(get_turf(src))
|
||||
var/obj/structure/spider/spiderling/terror_spiderling/S = new /obj/structure/spider/spiderling/terror_spiderling(get_turf(src))
|
||||
if(spiderling_type)
|
||||
S.grow_as = spiderling_type
|
||||
S.use_vents = spiderling_ventcrawl
|
||||
@@ -174,7 +174,7 @@
|
||||
S.amount_grown = 250
|
||||
var/rnum = 5 - spiderling_number
|
||||
for(var/i=0, i<rnum, i++)
|
||||
var/obj/effect/spider/spiderling/terror_spiderling/S = new /obj/effect/spider/spiderling/terror_spiderling(get_turf(src))
|
||||
var/obj/structure/spider/spiderling/terror_spiderling/S = new /obj/structure/spider/spiderling/terror_spiderling(get_turf(src))
|
||||
S.stillborn = 1
|
||||
// every set of eggs always spawn 5 spiderlings, but most are decoys
|
||||
qdel(src)
|
||||
@@ -21,7 +21,7 @@
|
||||
continue
|
||||
if(iscarbon(H))
|
||||
var/mob/living/carbon/C = H
|
||||
if(IsInfected(C)) // only target the infected if they're attacking us. Even then, lowest priority.
|
||||
if(IsTSInfected(C)) // only target the infected if they're attacking us. Even then, lowest priority.
|
||||
if(C in enemies)
|
||||
targets3 += C
|
||||
continue
|
||||
@@ -65,15 +65,13 @@
|
||||
targets2 += H
|
||||
else
|
||||
targets3 += H
|
||||
if(health < maxHealth)
|
||||
// if we're hurt, and ONLY if we're hurt, do the additional check for mechs/space pods. Save processing time.
|
||||
for(var/obj/mecha/M in view(src, vision_range))
|
||||
if(get_dist(M, src) <= 2)
|
||||
targets2 += M
|
||||
else
|
||||
targets3 += M
|
||||
for(var/obj/spacepod/S in view(src, vision_range))
|
||||
targets3 += S
|
||||
for(var/obj/mecha/M in view(src, vision_range))
|
||||
if(get_dist(M, src) <= 2)
|
||||
targets2 += M
|
||||
else
|
||||
targets3 += M
|
||||
for(var/obj/spacepod/S in view(src, vision_range))
|
||||
targets3 += S
|
||||
if(targets1.len)
|
||||
return targets1
|
||||
if(targets2.len)
|
||||
@@ -138,9 +136,12 @@
|
||||
break
|
||||
else if(ai_spins_webs && world.time > (last_spins_webs + freq_spins_webs))
|
||||
last_spins_webs = world.time
|
||||
var/obj/effect/spider/terrorweb/T = locate() in get_turf(src)
|
||||
var/obj/structure/spider/terrorweb/T = locate() in get_turf(src)
|
||||
if(!T)
|
||||
new /obj/effect/spider/terrorweb(get_turf(src))
|
||||
var/obj/structure/spider/terrorweb/W = new /obj/structure/spider/terrorweb(loc)
|
||||
if(web_infects)
|
||||
W.infectious = 1
|
||||
W.name = "sharp terror web"
|
||||
visible_message("<span class='notice'>[src] puts up some spider webs.</span>")
|
||||
else if(ai_ventcrawls && world.time > (last_ventcrawl_time + my_ventcrawl_freq))
|
||||
if(prob(idle_ventcrawl_chance))
|
||||
@@ -181,7 +182,6 @@
|
||||
var/mob/living/M = A
|
||||
if(!("terrorspiders" in M.faction))
|
||||
enemies |= M
|
||||
visible_message("<span class='danger'>[src] glares at [M]!</span>")
|
||||
else if(istype(A, /obj/mecha))
|
||||
var/obj/mecha/M = A
|
||||
if(M.occupant)
|
||||
@@ -211,7 +211,7 @@
|
||||
if(m2 == mylocation)
|
||||
chasecycles++
|
||||
ClearObstacle(get_turf(mygoal))
|
||||
if(chasecycles >= 2)
|
||||
if(chasecycles >= 1)
|
||||
chasecycles = 0
|
||||
if(spider_opens_doors)
|
||||
var/tgt_dir = get_dir(src,mygoal)
|
||||
@@ -275,7 +275,7 @@
|
||||
var/list/potentials = list()
|
||||
for(var/turf/simulated/T in oview(3,get_turf(src)))
|
||||
if(T.density == 0 && get_dist(get_turf(src),T) == 3)
|
||||
var/obj/effect/spider/terrorweb/W = locate() in T
|
||||
var/obj/structure/spider/terrorweb/W = locate() in T
|
||||
if(!W)
|
||||
var/obj/structure/grille/G = locate() in T
|
||||
if(!G)
|
||||
@@ -288,7 +288,7 @@
|
||||
var/list/webbed = list()
|
||||
for(var/turf/simulated/T in oview(3,get_turf(src)))
|
||||
if(T.density == 0 && get_dist(get_turf(src),T) == 3)
|
||||
var/obj/effect/spider/terrorweb/W = locate() in T
|
||||
var/obj/structure/spider/terrorweb/W = locate() in T
|
||||
if(W)
|
||||
webbed += T
|
||||
return webbed
|
||||
|
||||
@@ -130,6 +130,7 @@ var/global/list/ts_spiderling_list = list()
|
||||
var/spider_myqueen = null
|
||||
var/mylocation = null
|
||||
var/chasecycles = 0
|
||||
var/web_infects = 0
|
||||
|
||||
var/datum/action/innate/terrorspider/web/web_action
|
||||
var/datum/action/innate/terrorspider/wrap/wrap_action
|
||||
@@ -167,7 +168,7 @@ var/global/list/ts_spiderling_list = list()
|
||||
visible_message("<span class='notice'>[src] harmlessly nuzzles [target].</span>")
|
||||
T.CheckFaction()
|
||||
CheckFaction()
|
||||
else if(istype(target, /obj/effect/spider/cocoon))
|
||||
else if(istype(target, /obj/structure/spider/cocoon))
|
||||
to_chat(src, "Destroying our own cocoons would not help us.")
|
||||
else if(istype(target, /obj/machinery/door/firedoor))
|
||||
var/obj/machinery/door/firedoor/F = target
|
||||
@@ -263,7 +264,6 @@ var/global/list/ts_spiderling_list = list()
|
||||
// these are static spiders, specifically for the UO71 away mission, make them stay in place
|
||||
ai_ventcrawls = 0
|
||||
spider_placed = 1
|
||||
wander = 0
|
||||
else
|
||||
ts_count_alive_station++
|
||||
// after 30 seconds, assuming nobody took control of it yet, offer it to ghosts.
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
move_to_delay = 4
|
||||
spider_tier = TS_TIER_2
|
||||
loot = list(/obj/item/clothing/accessory/medal)
|
||||
web_infects = 1
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/poison/terror_spider/white/LoseTarget()
|
||||
@@ -42,8 +43,8 @@
|
||||
return
|
||||
var/inject_target = pick("chest","head")
|
||||
L.attack_animal(src)
|
||||
if(L.stunned || L.paralysis || L.can_inject(null,0,inject_target,0))
|
||||
if(!IsInfected(L))
|
||||
if(L.stunned || L.paralysis || L.can_inject(null, 0, inject_target, 0))
|
||||
if(!IsTSInfected(L))
|
||||
visible_message("<span class='danger'>[src] buries its long fangs deep into the [inject_target] of [L]!</span>")
|
||||
new /obj/item/organ/internal/body_egg/terror_eggs(L)
|
||||
if(!ckey)
|
||||
@@ -54,7 +55,7 @@
|
||||
L.Weaken(5)
|
||||
L.Stun(5)
|
||||
|
||||
/mob/living/simple_animal/hostile/poison/terror_spider/proc/IsInfected(mob/living/carbon/C) // Terror AI requires this
|
||||
/proc/IsTSInfected(mob/living/carbon/C) // Terror AI requires this
|
||||
if(C.get_int_organ(/obj/item/organ/internal/body_egg))
|
||||
return 1
|
||||
return 0
|
||||
@@ -1093,8 +1093,10 @@ var/list/slot_equipment_priority = list( \
|
||||
var/obj/item/weapon/selection = input("What do you want to yank out?", "Embedded objects") in valid_objects
|
||||
|
||||
if(self)
|
||||
visible_message("<span class='warning'>[usr] appears to be trying to extract an object from their body.</span>")
|
||||
to_chat(src, "<span class='warning'>You attempt to get a good grip on [selection] in your body.</span>")
|
||||
else
|
||||
visible_message("<span class='warning'>[usr] attempts to get a good grip on [selection] in [S]'s body.</span>")
|
||||
to_chat(U, "<span class='warning'>You attempt to get a good grip on [selection] in [S]'s body.</span>")
|
||||
|
||||
if(!do_after(U, 80, target = S))
|
||||
|
||||
@@ -460,7 +460,7 @@ var/list/intents = list(I_HELP,I_DISARM,I_GRAB,I_HARM)
|
||||
lname = "<span class='name'>[lname]</span> "
|
||||
to_chat(M, "<span class='deadsay'>[lname][follow][message]</span>")
|
||||
|
||||
/proc/notify_ghosts(message, ghost_sound = null, enter_link = null, atom/source = null, image/alert_overlay = null, flashwindow = TRUE, var/action = NOTIFY_JUMP) //Easy notification of ghosts.
|
||||
/proc/notify_ghosts(message, ghost_sound = null, enter_link = null, title = null, atom/source = null, image/alert_overlay = null, flashwindow = TRUE, var/action = NOTIFY_JUMP) //Easy notification of ghosts.
|
||||
for(var/mob/dead/observer/O in player_list)
|
||||
if(O.client)
|
||||
to_chat(O, "<span class='ghostalert'>[message][(enter_link) ? " [enter_link]" : ""]<span>")
|
||||
@@ -473,6 +473,8 @@ var/list/intents = list(I_HELP,I_DISARM,I_GRAB,I_HARM)
|
||||
if(A)
|
||||
if(O.client.prefs && O.client.prefs.UI_style)
|
||||
A.icon = ui_style2icon(O.client.prefs.UI_style)
|
||||
if(title)
|
||||
A.name = title
|
||||
A.desc = message
|
||||
A.action = action
|
||||
A.target = source
|
||||
@@ -626,4 +628,4 @@ var/list/intents = list(I_HELP,I_DISARM,I_GRAB,I_HARM)
|
||||
return !!(client.prefs.toggles & toggleflag)
|
||||
|
||||
|
||||
#define isterrorspider(A) (istype((A), /mob/living/simple_animal/hostile/poison/terror_spider))
|
||||
#define isterrorspider(A) (istype((A), /mob/living/simple_animal/hostile/poison/terror_spider))
|
||||
|
||||
@@ -431,106 +431,87 @@
|
||||
/datum/sprite_accessory/hair/ipc
|
||||
species_allowed = list("Machine")
|
||||
glasses_over = 1
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.", "Shellguard Munitions Monitor Series")
|
||||
|
||||
/datum/sprite_accessory/hair/ipc/ipc_screen_pink
|
||||
name = "Pink IPC Screen"
|
||||
icon_state = "ipc_pink"
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
/datum/sprite_accessory/hair/ipc/ipc_screen_red
|
||||
name = "Red IPC Screen"
|
||||
icon_state = "ipc_red"
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
/datum/sprite_accessory/hair/ipc/ipc_screen_green
|
||||
name = "Green IPC Screen"
|
||||
icon_state = "ipc_green"
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
/datum/sprite_accessory/hair/ipc/ipc_screen_blue
|
||||
name = "Blue IPC Screen"
|
||||
icon_state = "ipc_blue"
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
/datum/sprite_accessory/hair/ipc/ipc_screen_breakout
|
||||
name = "Breakout IPC Screen"
|
||||
icon_state = "ipc_breakout"
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
/datum/sprite_accessory/hair/ipc/ipc_screen_eight
|
||||
name = "Eight IPC Screen"
|
||||
icon_state = "ipc_eight"
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
/datum/sprite_accessory/hair/ipc/ipc_screen_rainbow
|
||||
name = "Rainbow IPC Screen"
|
||||
icon_state = "ipc_rainbow"
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
/datum/sprite_accessory/hair/ipc/ipc_screen_goggles
|
||||
name = "Goggles IPC Screen"
|
||||
icon_state = "ipc_goggles"
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
/datum/sprite_accessory/hair/ipc/ipc_screen_heart
|
||||
name = "Heart IPC Screen"
|
||||
icon_state = "ipc_heart"
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
/datum/sprite_accessory/hair/ipc/ipc_screen_monoeye
|
||||
name = "Monoeye IPC Screen"
|
||||
icon_state = "ipc_monoeye"
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
/datum/sprite_accessory/hair/ipc/ipc_screen_nature
|
||||
name = "Nature IPC Screen"
|
||||
icon_state = "ipc_nature"
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
/datum/sprite_accessory/hair/ipc/ipc_screen_orange
|
||||
name = "Orange IPC Screen"
|
||||
icon_state = "ipc_orange"
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
/datum/sprite_accessory/hair/ipc/ipc_screen_purple
|
||||
name = "Purple IPC Screen"
|
||||
icon_state = "ipc_purple"
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
/datum/sprite_accessory/hair/ipc/ipc_screen_shower
|
||||
name = "Shower IPC Screen"
|
||||
icon_state = "ipc_shower"
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
/datum/sprite_accessory/hair/ipc/ipc_screen_static
|
||||
name = "Static IPC Screen"
|
||||
icon_state = "ipc_static"
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
/datum/sprite_accessory/hair/ipc/ipc_screen_yellow
|
||||
name = "Yellow IPC Screen"
|
||||
icon_state = "ipc_yellow"
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
/datum/sprite_accessory/hair/ipc/ipc_screen_scrolling
|
||||
name = "Scanline IPC Screen"
|
||||
icon_state = "ipc_scroll"
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
/datum/sprite_accessory/hair/ipc/ipc_screen_console
|
||||
name = "Console IPC Screen"
|
||||
icon_state = "ipc_console"
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
/datum/sprite_accessory/hair/ipc/ipc_screen_rgb
|
||||
name = "RGB IPC Screen"
|
||||
icon_state = "ipc_rgb"
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
/datum/sprite_accessory/hair/ipc/ipc_screen_glider
|
||||
name = "Glider IPC Screen"
|
||||
icon_state = "ipc_gol_glider"
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
/datum/sprite_accessory/hair/ipc/hesphiastos_alt_off
|
||||
name = "Dark Hesphiastos Screen"
|
||||
@@ -1151,13 +1132,13 @@
|
||||
///////////////////////////
|
||||
/datum/sprite_accessory/underwear
|
||||
icon = 'icons/mob/underwear.dmi'
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Slime People", "Skeleton", "Drask")
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skrell", "Slime People", "Skeleton", "Drask")
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/underwear/nude
|
||||
name = "Nude"
|
||||
icon_state = null
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Slime People", "Skeleton", "Drask", "Vox")
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skrell", "Slime People", "Skeleton", "Drask", "Vox")
|
||||
|
||||
/datum/sprite_accessory/underwear/male
|
||||
gender = MALE
|
||||
@@ -1277,13 +1258,13 @@
|
||||
////////////////////////////
|
||||
/datum/sprite_accessory/undershirt
|
||||
icon = 'icons/mob/underwear.dmi'
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Slime People", "Skeleton", "Drask")
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skrell", "Slime People", "Skeleton", "Drask")
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/nude
|
||||
name = "Nude"
|
||||
icon_state = null
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Slime People", "Skeleton", "Drask", "Vox")
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skrell", "Slime People", "Skeleton", "Drask", "Vox")
|
||||
|
||||
//plain color shirts
|
||||
/datum/sprite_accessory/undershirt/shirt_white
|
||||
@@ -1513,13 +1494,13 @@
|
||||
///////////////////////
|
||||
/datum/sprite_accessory/socks
|
||||
icon = 'icons/mob/underwear.dmi'
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Slime People", "Skeleton", "Drask")
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skrell", "Slime People", "Skeleton", "Drask")
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/socks/nude
|
||||
name = "Nude"
|
||||
icon_state = null
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Slime People", "Skeleton", "Drask", "Vox")
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skrell", "Slime People", "Skeleton", "Drask", "Vox")
|
||||
|
||||
/datum/sprite_accessory/socks/white_norm
|
||||
name = "Normal White"
|
||||
@@ -1645,7 +1626,7 @@
|
||||
|
||||
/datum/sprite_accessory/head_accessory/none
|
||||
name = "None"
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Grey", "Machine", "Tajaran", "Vulpkanin", "Slime People", "Skeleton", "Vox")
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Grey", "Kidan", "Machine", "Tajaran", "Vulpkanin", "Skrell", "Slime People", "Skeleton", "Vox")
|
||||
icon_state = "accessory_none"
|
||||
|
||||
/datum/sprite_accessory/head_accessory/unathi
|
||||
@@ -1768,6 +1749,48 @@
|
||||
name = "Head Light"
|
||||
icon_state = "light"
|
||||
|
||||
/datum/sprite_accessory/head_accessory/kidan
|
||||
icon = 'icons/mob/human_face.dmi'
|
||||
species_allowed = list("Kidan")
|
||||
over_hair = 1
|
||||
do_colouration = 0
|
||||
|
||||
/datum/sprite_accessory/head_accessory/kidan/perked_antennae
|
||||
name = "Perked-up Antennae"
|
||||
icon_state = "kidan_perky"
|
||||
|
||||
/datum/sprite_accessory/head_accessory/kidan/mopey_antennae
|
||||
name = "Mopey Antennae"
|
||||
icon_state = "kidan_mopey"
|
||||
|
||||
/datum/sprite_accessory/head_accessory/kidan/curious_antennae
|
||||
name = "Curious Antennae"
|
||||
icon_state = "kidan_curious"
|
||||
|
||||
/datum/sprite_accessory/head_accessory/kidan/mopey_antennae
|
||||
name = "Mopey Antennae"
|
||||
icon_state = "kidan_mopey"
|
||||
|
||||
/datum/sprite_accessory/head_accessory/kidan/crescent_antennae
|
||||
name = "Crescent Antennae"
|
||||
icon_state = "kidan_crescent"
|
||||
|
||||
/datum/sprite_accessory/head_accessory/kidan/alert_antennae
|
||||
name = "Alert Antennae"
|
||||
icon_state = "kidan_alert"
|
||||
|
||||
/datum/sprite_accessory/head_accessory/kidan/normal_antennae
|
||||
name = "Normal Antennae"
|
||||
icon_state = "kidan_normal"
|
||||
|
||||
/datum/sprite_accessory/head_accessory/kidan/long_antennae
|
||||
name = "Long Antennae"
|
||||
icon_state = "kidan_long"
|
||||
|
||||
/datum/sprite_accessory/head_accessory/kidan/moth_antennae
|
||||
name = "Moth Antennae"
|
||||
icon_state = "kidan_moth"
|
||||
|
||||
|
||||
/* BODY MARKINGS */
|
||||
|
||||
@@ -1779,7 +1802,7 @@
|
||||
|
||||
/datum/sprite_accessory/body_markings/none
|
||||
name = "None"
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Grey", "Machine", "Tajaran", "Vulpkanin", "Slime People", "Skeleton", "Vox")
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Grey", "Machine", "Tajaran", "Vulpkanin", "Skrell", "Slime People", "Skeleton", "Vox")
|
||||
icon_state = "accessory_none"
|
||||
|
||||
/datum/sprite_accessory/body_markings/tiger
|
||||
@@ -1968,6 +1991,7 @@
|
||||
/datum/sprite_accessory/body_markings/head/unathi/snout_lower_una_round
|
||||
name = "Unathi Lower Round Snout"
|
||||
icon_state = "markings_face_snout_lower_una"
|
||||
heads_allowed = list("All")
|
||||
|
||||
/datum/sprite_accessory/body_markings/head/unathi/banded_una //Companion marking for Unathi Banded.
|
||||
name = "Unathi Banded Head"
|
||||
|
||||
Reference in New Issue
Block a user