mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-26 13:39:16 +01:00
Merge branch 'master' into polaris-sync-2018-02-07
This commit is contained in:
@@ -77,7 +77,7 @@
|
||||
if(do_after(user, 30, trashman) && !patient && !trashman.buckled && length(contents) < max_item_count)
|
||||
trashman.forceMove(src)
|
||||
trashman.reset_view(src)
|
||||
processing_objects.Add(src)
|
||||
processing_objects |= src
|
||||
user.visible_message("<span class='warning'>[hound.name]'s internal analyzer groans lightly as [trashman] slips inside.</span>", "<span class='notice'>Your internal analyzer groans lightly as [trashman] slips inside.</span>")
|
||||
playsound(hound, 'sound/vore/gulp.ogg', 80, 1)
|
||||
update_patient()
|
||||
@@ -127,7 +127,7 @@
|
||||
if(do_after(user, 30, trashman) && !patient && !trashman.buckled && length(contents) < max_item_count)
|
||||
trashman.forceMove(src)
|
||||
trashman.reset_view(src)
|
||||
processing_objects.Add(src)
|
||||
processing_objects |= src
|
||||
user.visible_message("<span class='warning'>[hound.name]'s garbage processor groans lightly as [trashman] slips inside.</span>", "<span class='notice'>Your garbage compactor groans lightly as [trashman] slips inside.</span>")
|
||||
playsound(hound, 'sound/vore/gulp.ogg', 80, 1)
|
||||
update_patient()
|
||||
@@ -154,7 +154,7 @@
|
||||
H.forceMove(src)
|
||||
H.reset_view(src)
|
||||
update_patient()
|
||||
processing_objects.Add(src)
|
||||
processing_objects |= src
|
||||
user.visible_message("<span class='warning'>[hound.name]'s medical pod lights up as [H.name] slips inside into their [src.name].</span>", "<span class='notice'>Your medical pod lights up as [H] slips into your [src]. Life support functions engaged.</span>")
|
||||
message_admins("[key_name(hound)] has eaten [key_name(patient)] as a dogborg. ([hound ? "<a href='?_src_=holder;adminplayerobservecoodjump=1;X=[hound.x];Y=[hound.y];Z=[hound.z]'>JMP</a>" : "null"])")
|
||||
playsound(hound, 'sound/vore/gulp.ogg', 80, 1)
|
||||
@@ -317,7 +317,7 @@
|
||||
else
|
||||
cleaning = 1
|
||||
drain(startdrain)
|
||||
processing_objects.Add(src)
|
||||
processing_objects |= src
|
||||
update_patient()
|
||||
sleeperUI(usr)
|
||||
if(patient)
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
cooperative = TRUE
|
||||
firing_lines = TRUE
|
||||
investigates = TRUE
|
||||
run_at_them = FALSE //VOREStation Edit
|
||||
|
||||
speak_chance = 1
|
||||
speak = list(
|
||||
@@ -86,7 +87,7 @@
|
||||
/mob/living/simple_animal/hostile/hivebot/range/ion
|
||||
name = "engineering hivebot"
|
||||
desc = "A robot. It has a tool which emits focused electromagnetic pulses, which are deadly to other synthetic adverseries."
|
||||
projectiletype = /obj/item/projectile/ion
|
||||
projectiletype = /obj/item/projectile/ion/small //VOREStation Edit
|
||||
projectilesound = 'sound/weapons/Laser.ogg'
|
||||
icon_living = "engi"
|
||||
ranged = TRUE
|
||||
|
||||
@@ -139,7 +139,7 @@
|
||||
loot_list = list(/obj/item/weapon/gun/projectile/automatic/c20r = 100)
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/ranged/space
|
||||
name = "syndicate sommando"
|
||||
name = "space mercenary" //VOREStation Edit
|
||||
icon_state = "syndicaterangedpsace"
|
||||
icon_living = "syndicaterangedpsace"
|
||||
|
||||
@@ -154,6 +154,7 @@
|
||||
min_n2 = 0
|
||||
max_n2 = 0
|
||||
minbodytemp = 0
|
||||
maxbodytemp = 900 //VOREStation edit - We'll pretend they have good suits
|
||||
|
||||
corpse = /obj/effect/landmark/mobcorpse/syndicatecommando
|
||||
|
||||
|
||||
@@ -343,9 +343,22 @@
|
||||
var/moving_to = 0 // otherwise it always picks 4, fuck if I know. Did I mention fuck BYOND
|
||||
moving_to = pick(cardinal)
|
||||
dir = moving_to //How about we turn them the direction they are moving, yay.
|
||||
Move(get_step(src,moving_to))
|
||||
var/turf/T = get_step(src,moving_to)
|
||||
if(avoid_turf(T))
|
||||
return
|
||||
Move(T)
|
||||
lifes_since_move = 0
|
||||
|
||||
// Checks to see if mob doesn't like this kind of turf
|
||||
/mob/living/simple_animal/proc/avoid_turf(var/turf/turf)
|
||||
if(!turf)
|
||||
return TRUE //Avoid the nothing, yes
|
||||
|
||||
if(istype(turf,/turf/simulated/sky))
|
||||
return TRUE //Mobs aren't that stupid, probably
|
||||
|
||||
return FALSE //Override it on stuff to adjust
|
||||
|
||||
// Handles random chatter, called from Life() when stance = STANCE_IDLE
|
||||
/mob/living/simple_animal/proc/handle_idle_speaking()
|
||||
if(rand(0,200) < speak_chance)
|
||||
|
||||
@@ -198,3 +198,12 @@
|
||||
update_icon()
|
||||
stop_automated_movement = 0
|
||||
..()
|
||||
|
||||
// Checks to see if mob doesn't like this kind of turf
|
||||
/mob/living/simple_animal/avoid_turf(var/turf/turf)
|
||||
//So we only check if the parent didn't find anything terrible
|
||||
if((. = ..(turf)))
|
||||
return .
|
||||
|
||||
if(istype(turf,/turf/unsimulated/floor/sky))
|
||||
return TRUE //Mobs aren't that stupid, probably
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
/mob/living/simple_animal/hostile/jelly
|
||||
name = "jelly blob"
|
||||
desc = "Some sort of undulating blob of slime!"
|
||||
icon = 'icons/mob/vore.dmi'
|
||||
icon_dead = "jelly_dead"
|
||||
icon_living = "jelly"
|
||||
icon_state = "jelly"
|
||||
|
||||
faction = "virgo2"
|
||||
maxHealth = 50
|
||||
health = 50
|
||||
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 15
|
||||
|
||||
speak_chance = 2
|
||||
emote_hear = list("squishes","spluts","splorts","sqrshes","makes slime noises")
|
||||
emote_see = list("undulates quietly")
|
||||
|
||||
// Activate Noms!
|
||||
/mob/living/simple_animal/hostile/jelly
|
||||
vore_active = 1
|
||||
vore_pounce_chance = 0
|
||||
vore_icons = SA_ICON_LIVING
|
||||
swallowTime = 2 SECONDS // Hungry little bastards.
|
||||
@@ -0,0 +1,211 @@
|
||||
/mob/living/simple_animal/shadekin //Spawn this one only if you're looking for a bad time. Not friendly.
|
||||
name = "shadekin"
|
||||
desc = "Some sort of fluffer. Big ears, long tail! "
|
||||
icon = 'icons/mob/vore_shadekin.dmi'
|
||||
icon_state = "dark"
|
||||
icon_living = "dark"
|
||||
icon_dead = "dead"
|
||||
faction = "shadekin"
|
||||
maxHealth = 200
|
||||
health = 200
|
||||
|
||||
move_to_delay = 3
|
||||
|
||||
investigates = TRUE
|
||||
reacts = TRUE
|
||||
run_at_them = FALSE
|
||||
speak_chance = 2
|
||||
cooperative = FALSE
|
||||
|
||||
min_oxy = 0
|
||||
max_oxy = 0
|
||||
min_tox = 0
|
||||
max_tox = 0
|
||||
min_co2 = 0
|
||||
max_co2 = 0
|
||||
min_n2 = 0
|
||||
max_n2 = 0
|
||||
minbodytemp = 0
|
||||
maxbodytemp = 900
|
||||
|
||||
speak = list("Mar.", "Mar?", "Mar!")
|
||||
emote_hear = list("chrrrrrs","wurbles", "wrrrrbles")
|
||||
emote_see = list("tailtwitches","earflicks")
|
||||
say_maybe_target = list("...mar?")
|
||||
say_got_target = list("MAR!!!")
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 20
|
||||
response_help = "pets the"
|
||||
response_disarm = "bops the"
|
||||
response_harm = "hits the"
|
||||
attacktext = "mauled"
|
||||
friendly = list("boops", "pawbs")
|
||||
reactions = list("Mar?" = "Marrr.", "Mar!" = "Mar???", "Mar." = "Marrr.")
|
||||
|
||||
old_x = -16
|
||||
old_y = 0
|
||||
pixel_x = -16
|
||||
pixel_y = 0
|
||||
var/eye_state = "e_red"
|
||||
var/eye_desc
|
||||
|
||||
vore_active = TRUE
|
||||
vore_pounce_chance = 25
|
||||
vore_icons = SA_ICON_LIVING
|
||||
swallowTime = 2 SECONDS
|
||||
vore_escape_chance = 25
|
||||
|
||||
//None, they stay as their defaults.
|
||||
vore_digest_chance = 0
|
||||
vore_absorb_chance = 0
|
||||
|
||||
/mob/living/simple_animal/shadekin/initialize()
|
||||
. = ..()
|
||||
icon_living = icon_state
|
||||
if(eye_state)
|
||||
overlays += image(icon,null,eye_state)
|
||||
if(eye_desc)
|
||||
desc += "This one has [eye_desc]!"
|
||||
|
||||
/mob/living/simple_animal/shadekin/death(gibbed, deathmessage = "phases out!")
|
||||
spawn(20)
|
||||
qdel(src) //Back from whence you came!
|
||||
|
||||
. = ..(FALSE, deathmessage)
|
||||
|
||||
/mob/living/simple_animal/shadekin/Found(var/atom/A)
|
||||
if(specific_targets && isliving(A)) //Healing!
|
||||
var/mob/living/L = A
|
||||
var/health_percent = (L.health/L.maxHealth)*100
|
||||
if(health_percent <= 50)
|
||||
return A
|
||||
. = ..()
|
||||
|
||||
/mob/living/simple_animal/shadekin/Life()
|
||||
if((. = ..()))
|
||||
//Drawing energy from bluespace?
|
||||
if(nutrition != initial(nutrition))
|
||||
nutrition += nutrition > initial(nutrition) ? -1 : 1
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
/mob/living/simple_animal/shadekin/red
|
||||
eye_state = "e_red"
|
||||
hostile = TRUE
|
||||
retaliate = TRUE
|
||||
stop_when_pulled = FALSE
|
||||
destroy_surroundings = TRUE
|
||||
|
||||
eye_desc = "red eyes"
|
||||
vore_stomach_flavor = "You slip passed pointy triangle teeth and down the slick, \
|
||||
slippery gullet of the creature. It's warm, and the air is thick. You can hear \
|
||||
its body squelch and shift around you as you settle into its stomach! Thick digestive \
|
||||
enzymes cling to you within that dark space, tingling and stinging immediately! The weight of \
|
||||
the doughy walls press in around you instantly, churning you up as you begin to digest!"
|
||||
|
||||
/mob/living/simple_animal/shadekin/red/white
|
||||
icon_state = "white"
|
||||
/mob/living/simple_animal/shadekin/red/dark
|
||||
icon_state = "dark"
|
||||
/mob/living/simple_animal/shadekin/red/brown
|
||||
icon_state = "brown"
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
/mob/living/simple_animal/shadekin/blue
|
||||
eye_state = "e_blue"
|
||||
health = 100
|
||||
maxHealth = 100
|
||||
hostile = TRUE //Not actually, they eat injured people to heal them. See found()
|
||||
retaliate = FALSE
|
||||
stop_when_pulled = TRUE
|
||||
specific_targets = TRUE //For finding injured people
|
||||
destroy_surroundings = FALSE
|
||||
vore_default_mode = DM_HEAL
|
||||
vore_escape_chance = 75
|
||||
vore_bump_chance = 20
|
||||
vore_standing_too = 1
|
||||
vore_pounce_chance = 80
|
||||
swallowTime = 4 SECONDS //A little longer to compensate for the above
|
||||
vore_ignores_undigestable = FALSE
|
||||
melee_damage_lower = 0
|
||||
melee_damage_upper = 0
|
||||
attacktext = "shoved"
|
||||
|
||||
eye_desc = "blue eyes"
|
||||
vore_stomach_flavor = "You slip passed pointy triangle teeth and down the slick, \
|
||||
slippery gullet of the creature. It's warm, and the air is thick. You can hear its body \
|
||||
squelch and shift around you as you settle into its stomach! It's oddly calm, and very dark. \
|
||||
The doughy flesh rolls across your form in gentle waves. The aches and pains across your form slowly begin to \
|
||||
diminish, your body is healing much faster than normal! You’re also soon soaked in harmless slime."
|
||||
|
||||
/mob/living/simple_animal/shadekin/blue/white
|
||||
icon_state = "white"
|
||||
/mob/living/simple_animal/shadekin/blue/dark
|
||||
icon_state = "dark"
|
||||
/mob/living/simple_animal/shadekin/blue/brown
|
||||
icon_state = "brown"
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
/mob/living/simple_animal/shadekin/purple
|
||||
eye_state = "e_purple"
|
||||
health = 150
|
||||
maxHealth = 150
|
||||
hostile = FALSE
|
||||
retaliate = TRUE
|
||||
stop_when_pulled = FALSE
|
||||
destroy_surroundings = TRUE
|
||||
vore_default_mode = DM_HOLD
|
||||
vore_digest_chance = 25
|
||||
vore_absorb_chance = 25
|
||||
|
||||
eye_desc = "purple eyes"
|
||||
vore_stomach_flavor = "You slip passed pointy triangle teeth and down the slick, slippery gullet of the creature. \
|
||||
It's warm, and the air is thick. You can hear its body squelch and shift around you as you settle into its stomach! \
|
||||
It’s relatively calm inside the dark organ. Wet and almost molten for how gooey your surroundings feel. \
|
||||
You can feel the doughy walls cling to you posessively... It’s almost like you could sink into them. \
|
||||
There is also an ominous gurgling from somewhere nearby..."
|
||||
|
||||
/mob/living/simple_animal/shadekin/purple/white
|
||||
icon_state = "white"
|
||||
/mob/living/simple_animal/shadekin/purple/dark
|
||||
icon_state = "dark"
|
||||
/mob/living/simple_animal/shadekin/purple/brown
|
||||
icon_state = "brown"
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
/mob/living/simple_animal/shadekin/yellow
|
||||
eye_state = "e_yellow"
|
||||
health = 150
|
||||
maxHealth = 150
|
||||
hostile = FALSE
|
||||
retaliate = TRUE
|
||||
stop_when_pulled = FALSE
|
||||
destroy_surroundings = TRUE
|
||||
vore_default_mode = DM_DRAIN
|
||||
vore_digest_chance = 5
|
||||
vore_ignores_undigestable = FALSE
|
||||
|
||||
eye_desc = "yellow eyes"
|
||||
vore_stomach_flavor = "You slip passed pointy triangle teeth and down the slick, slippery gullet \
|
||||
of the creature. It's warm, and the air is thick. You can hear its body squelch and shift around you \
|
||||
as you settle into its stomach! The doughy walls within cling to you heavily, churning down on you, wearing \
|
||||
you out!! There doesn’t appear to be any actual danger here, harmless slime clings to you, but it’s getting \
|
||||
harder and harder to move as those walls press in on you insistently!"
|
||||
|
||||
/mob/living/simple_animal/shadekin/yellow/white
|
||||
icon_state = "white"
|
||||
/mob/living/simple_animal/shadekin/yellow/dark
|
||||
icon_state = "dark"
|
||||
/mob/living/simple_animal/shadekin/yellow/brown
|
||||
icon_state = "brown"
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
//Fluffy specific fluffer
|
||||
/mob/living/simple_animal/shadekin/blue/rivyr
|
||||
name = "Rivyr"
|
||||
desc = "She appears to be a fluffer of some sort. Deep blue eyes and curious attitude."
|
||||
icon_state = "rivyr"
|
||||
vore_stomach_flavor = "Blue flesh gleams in the fading light as you slip down the little mar’s gullet! \
|
||||
Gooey flesh and heat surrounds your form as you’re tucked away into the darkness of her stomach! Thick slimes cling \
|
||||
to you, but they seem to be harmless. The organ gently churns around you, clinging to your shape and forcing \
|
||||
you to curl up a bit. You can feel her rub at you some through the layers of flesh and fluff, while aches \
|
||||
and pains begin to fade away across your body."
|
||||
@@ -219,3 +219,6 @@
|
||||
var/seedarkness = 1 //Determines mob's ability to see shadows. 1 = Normal vision, 0 = darkvision
|
||||
|
||||
var/get_rig_stats = 0 //Moved from computer.dm
|
||||
|
||||
var/low_priority = FALSE //Skip processing life() if there's just no players on this Z-level
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
plane_masters[VIS_CH_BACKUP] = new /obj/screen/plane_master{plane = PLANE_CH_BACKUP} //Backup implant status
|
||||
plane_masters[VIS_CH_VANTAG] = new /obj/screen/plane_master{plane = PLANE_CH_VANTAG} //Vore Antags
|
||||
|
||||
plane_masters[VIS_AUGMENTED] = new /obj/screen/plane_master/augmented(my_mob) //Augmented reality
|
||||
plane_masters[VIS_AUGMENTED] = new /obj/screen/plane_master/augmented(null,my_mob) //Augmented reality
|
||||
|
||||
/////////////////
|
||||
//AR planemaster does some special image handling
|
||||
@@ -14,8 +14,8 @@
|
||||
var/state = FALSE //Saves cost with the lists
|
||||
var/mob/my_mob
|
||||
|
||||
/obj/screen/plane_master/augmented/New(var/mob/M)
|
||||
..()
|
||||
/obj/screen/plane_master/augmented/New(var/newloc, var/mob/M)
|
||||
..(newloc)
|
||||
my_mob = M
|
||||
logged_in_event.register(my_mob,src,/obj/screen/plane_master/augmented/proc/apply)
|
||||
|
||||
|
||||
@@ -365,7 +365,7 @@
|
||||
items_preserved |= item
|
||||
else
|
||||
internal_contents -= item
|
||||
owner.nutrition += (digested)
|
||||
owner.nutrition += (5 * digested)
|
||||
if(isrobot(owner))
|
||||
var/mob/living/silicon/robot/R = owner
|
||||
R.cell.charge += (50 * digested)
|
||||
@@ -489,9 +489,6 @@
|
||||
return
|
||||
internal_contents -= content
|
||||
target.internal_contents += content
|
||||
if(content in items_preserved)
|
||||
items_preserved -= content
|
||||
target.items_preserved += content
|
||||
if(isliving(content))
|
||||
var/mob/living/M = content
|
||||
if(target.inside_flavor)
|
||||
|
||||
@@ -605,6 +605,7 @@
|
||||
var/datum/belly/selected = vore_organs[belly]
|
||||
I.forceMove(src)
|
||||
selected.internal_contents |= I
|
||||
updateVRPanel()
|
||||
if(istype(I,/obj/item/device/flashlight/flare) || istype(I,/obj/item/weapon/flame/match) || istype(I,/obj/item/weapon/storage/box/matches))
|
||||
to_chat(src, "<span class='notice'>You can taste the flavor of spicy cardboard.</span>")
|
||||
else if(istype(I,/obj/item/device/flashlight/glowstick))
|
||||
|
||||
Reference in New Issue
Block a user