Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Hawk_v3
2018-10-07 23:07:09 +01:00
21 changed files with 197 additions and 36 deletions
+2 -1
View File
@@ -1,7 +1,8 @@
/datum/supply_pack/munitions/expeditionguns
name = "Frontier phaser (station-locked) crate"
contains = list(
/obj/item/weapon/gun/energy/frontier/locked = 2,
/obj/item/weapon/gun/energy/frontier/locked/basic = 2,
/obj/item/weapon/gun/energy/frontier/locked/holdout = 1,
)
cost = 35
containertype = /obj/structure/closet/crate/secure
+12 -1
View File
@@ -142,18 +142,30 @@
. = buckle_mob(M, forced)
if(.)
var/reveal_message = list("buckled_mob" = null, "buckled_to" = null) //VORE EDIT: This being a list and messages existing for the buckle target atom.
if(!silent)
if(M == user)
reveal_message["buckled_mob"] = "<span class='notice'>You come out of hiding and buckle yourself to [src].</span>" //VORE EDIT
reveal_message["buckled_to"] = "<span class='notice'>You come out of hiding as [M.name] buckles themselves to you.</span>" //VORE EDIT
M.visible_message(\
"<span class='notice'>[M.name] buckles themselves to [src].</span>",\
"<span class='notice'>You buckle yourself to [src].</span>",\
"<span class='notice'>You hear metal clanking.</span>")
else
reveal_message["buckled_mob"] = "<span class='notice'>You are revealed as you are buckled to [src].</span>" //VORE EDIT
reveal_message["buckled_to"] = "<span class='notice'>You are revealed as [M.name] is buckled to you.</span>" //VORE EDIT
M.visible_message(\
"<span class='danger'>[M.name] is buckled to [src] by [user.name]!</span>",\
"<span class='danger'>You are buckled to [src] by [user.name]!</span>",\
"<span class='notice'>You hear metal clanking.</span>")
M.reveal(silent, reveal_message["buckled_mob"]) //Reveal people so they aren't buckled to chairs from behind. //VORE EDIT, list arg instead of simple message var for buckled mob
//Vore edit start
var/mob/living/L = src
if(istype(L))
L.reveal(silent, reveal_message["buckled_to"])
//Vore edit end
/atom/movable/proc/user_unbuckle_mob(mob/living/buckled_mob, mob/user)
var/mob/living/M = unbuckle_mob(buckled_mob)
if(M)
@@ -193,4 +205,3 @@
riding_datum.handle_vehicle_layer()
riding_datum.handle_vehicle_offsets()
//VOREStation Add End
@@ -1560,9 +1560,8 @@
/mob/living/carbon/human/proc/update_icon_special() //For things such as teshari hiding and whatnot.
if(status_flags & HIDING) // Hiding? Carry on.
if(stat == DEAD || paralysis || weakened || stunned || restrained()) //stunned/knocked down by something that isn't the rest verb? Note: This was tried with INCAPACITATION_STUNNED, but that refused to work.
reset_plane_and_layer()
status_flags &= ~HIDING
if(stat == DEAD || paralysis || weakened || stunned || restrained() || buckled || LAZYLEN(grabbed_by) || has_buckled_mobs()) //stunned/knocked down by something that isn't the rest verb? Note: This was tried with INCAPACITATION_STUNNED, but that refused to work. //VORE EDIT: Check for has_buckled_mobs() (taur riding)
reveal(null)
else
layer = HIDING_LAYER
+1
View File
@@ -1,5 +1,6 @@
/mob/living/death()
clear_fullscreens()
reveal(TRUE) //Silently reveal the mob if they were hidden.
//VOREStation Edit - Mob spawner stuff
if(source_spawner)
source_spawner.get_death_report(src)
+9 -4
View File
@@ -1,15 +1,20 @@
/mob/living/proc/reveal(var/silent, var/message = "<span class='warning'>You have been revealed! You are no longer hidden.</span>")
if(status_flags & HIDING)
status_flags &= ~HIDING
reset_plane_and_layer()
if(!silent && message)
to_chat(src, message)
/mob/living/proc/hide()
set name = "Hide"
set desc = "Allows to hide beneath tables or certain items. Toggled on or off."
set category = "Abilities"
if(stat == DEAD || paralysis || weakened || stunned || restrained())
if(stat == DEAD || paralysis || weakened || stunned || restrained() || buckled || LAZYLEN(grabbed_by) || has_buckled_mobs()) //VORE EDIT: Check for has_buckled_mobs() (taur riding)
return
if(status_flags & HIDING)
status_flags &= ~HIDING
reset_plane_and_layer()
to_chat(src,"<span class='notice'>You have stopped hiding.</span>")
reveal("<span class='notice'>You have stopped hiding.</span>")
else
status_flags |= HIDING
layer = HIDING_LAYER //Just above cables with their 2.44
@@ -0,0 +1,23 @@
// Slightly placeholder, mostly to replace ion hivebots on V4
/mob/living/simple_animal/hostile/giant_spider/ion
desc = "Furry and green, it makes you shudder to look at it. This one has brilliant green eyes and a hint of static discharge."
tt_desc = "X Brachypelma phorus ionus"
icon_state = "webslinger"
icon_living = "webslinger"
icon_dead = "webslinger_dead"
maxHealth = 90
health = 90
melee_damage_lower = 8
melee_damage_upper = 15
ranged = 1
projectilesound = 'sound/weapons/taser2.ogg'
projectiletype = /obj/item/projectile/ion/small
firing_lines = 1
cooperative = 1
poison_chance = 15
poison_per_bite = 2
poison_type = "psilocybin"
@@ -14,6 +14,7 @@
var/vore_pounce_chance = 5 // Chance of this mob knocking down an opponent
var/vore_standing_too = 0 // Can also eat non-stunned mobs
var/vore_ignores_undigestable = 1 // Refuse to eat mobs who are undigestable by the prefs toggle.
var/swallowsound = null // What noise plays when you succeed in eating the mob.
var/vore_default_mode = DM_DIGEST // Default bellymode (DM_DIGEST, DM_HOLD, DM_ABSORB)
var/vore_default_flags = DM_FLAG_ITEMWEAK // Itemweak by default
@@ -114,7 +115,9 @@
var/old_target = target_mob
handle_stance(STANCE_BUSY)
. = animal_nom(target_mob)
playsound(src, swallowsound, 50, 1)
update_icon()
if(.)
// If we succesfully ate them, lose the target
LoseTarget()
@@ -0,0 +1,66 @@
/mob/living/simple_animal/retaliate/hippo
name = "hippo"
desc = "Mostly know for the spectacular hit of the live action movie Hungry Hungry Hippos."
tt_desc = "Hippopotamus amphibius"
icon = 'icons/mob/vore64x64.dmi'
icon_state = "hippo"
icon_living = "hippo"
icon_dead = "hippo_dead"
icon_gib = "hippo_gib"
intelligence_level = SA_ANIMAL
maxHealth = 200
health = 200
turns_per_move = 5
see_in_dark = 3
stop_when_pulled = 1
speed = 5
armor = list(
"melee" = 15,//They thick as fuck boi
"bullet" = 15,
"laser" = 15,
"energy" = 0,
"bomb" = 0,
"bio" = 0,
"rad" = 0)
response_help = "pets the"
response_disarm = "gently pushes aside the"
response_harm = "hits the"
attacktext = list("bit")
retaliate = 1
melee_damage_upper = 25
melee_damage_lower = 15
attack_sharp = 1
old_x = -16
old_y = 0
default_pixel_x = -16
pixel_x = -16
pixel_y = 0
speak_chance = 0.1
speak = list("UUUUUUH")
speak_emote = list("grunts","groans", "roars", "snorts")
emote_hear = list("groan")
emote_see = list("shakes its head")
meat_amount = 10 //Infinite meat!
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
// Activate Noms!
/mob/living/simple_animal/retaliate/hippo //I don't know why it's in a seperate line but everyone does it so i do it
vore_active = 1
vore_capacity = 1
vore_bump_chance = 15
vore_bump_emote = "lazily wraps its tentacles around"
vore_standing_too = 1
vore_ignores_undigestable = 0
vore_default_mode = DM_HOLD
vore_digest_chance = 10
vore_escape_chance = 20
vore_pounce_chance = 35 //it's hippo sized it doesn't care it just eats you
vore_stomach_name = "rumen" //First stomach of a ruminant. It's where the pre digestion bacteria stuff happens. Very warm.
vore_stomach_flavor = "You are squeezed into the sweltering insides of the herbivore rumen."
vore_icons = SA_ICON_LIVING
+2
View File
@@ -47,6 +47,8 @@
return
affecting.grabbed_by += src
affecting.reveal("<span class='warning'>You are revealed as [assailant] grabs you.</span>")
assailant.reveal("<span class='warning'>You reveal yourself as you grab [affecting].</span>")
hud = new /obj/screen/grab(src)
hud.icon_state = "reinforce"
+1 -1
View File
@@ -114,7 +114,7 @@
if(href_list["observe"])
if(alert(src,"Are you sure you wish to observe? You will have to wait 1 minute before being able to respawn!","Player Setup","Yes","No") == "Yes")
if(alert(src,"Are you sure you wish to observe? You will have to wait 5 minute before being able to respawn!","Player Setup","Yes","No") == "Yes") //Vorestation edit
if(!client) return 1
//Make a new mannequin quickly, and allow the observer to take the appearance
@@ -11,7 +11,9 @@
else
ridden.layer = initial(ridden.layer)
else
ridden.layer = initial(ridden.layer)
var/mob/living/L = ridden
if(!(istype(L) && (L.status_flags & HIDING)))
ridden.layer = initial(ridden.layer)
/datum/riding/taur/ride_check(mob/living/M)
var/mob/living/L = ridden
+7 -3
View File
@@ -47,9 +47,13 @@
I.gurgle_contaminate(src, cont_flavor)
items_preserved |= I
else
digest_item(I)
to_update = TRUE
did_an_item = TRUE
I.gurgle_contaminate(src, cont_flavor)
if(I.digest_stage && I.digest_stage > 0)
digest_item(I)
else
digest_item(I)
did_an_item = TRUE
to_update = TRUE
//Handle eaten mobs
else if(isliving(A))
+36 -11
View File
@@ -4,17 +4,38 @@
// Ye default implementation.
/obj/item/proc/digest_act(var/atom/movable/item_storage = null)
for(var/obj/item/O in contents)
if(istype(O,/obj/item/weapon/storage/internal)) //Dump contents from dummy pockets.
for(var/obj/item/SO in O)
if(item_storage)
SO.forceMove(item_storage)
qdel(O)
else if(item_storage)
O.forceMove(item_storage)
qdel(src)
return w_class
if(istype(item_storage,/obj/item/device/dogborg/sleeper))
for(var/obj/item/O in contents)
if(istype(O,/obj/item/weapon/storage/internal)) //Dump contents from dummy pockets.
for(var/obj/item/SO in O)
if(item_storage)
SO.forceMove(item_storage)
qdel(O)
else if(item_storage)
O.forceMove(item_storage)
qdel(src)
return w_class
var/g_damage = 1
if(digest_stage == null)
digest_stage = w_class
if(isbelly(item_storage))
var/obj/belly/B = item_storage
g_damage = 0.25 * (B.digest_brute + B.digest_burn)
if(digest_stage > 0)
if(g_damage > digest_stage)
g_damage = digest_stage
digest_stage -= g_damage
else
for(var/obj/item/O in contents)
if(istype(O,/obj/item/weapon/storage/internal)) //Dump contents from dummy pockets.
for(var/obj/item/SO in O)
if(item_storage)
SO.forceMove(item_storage)
qdel(O)
else if(item_storage)
O.forceMove(item_storage)
qdel(src)
return g_damage
/////////////
// Some indigestible stuff
@@ -91,3 +112,7 @@
/obj/item/device/mmi/digital/posibrain/digest_act(var/atom/movable/item_storage = null)
//Replace this with a VORE setting so all types of posibrains can/can't be digested on a whim
return FALSE
// Gradual damage measurement
/obj/item
var/digest_stage = null
+14 -4
View File
@@ -743,10 +743,6 @@
var/recharging = 0
projectile_type = /obj/item/projectile/beam
firemodes = list(
list(mode_name="normal", fire_delay=12, projectile_type=/obj/item/projectile/beam, charge_cost = 300),
list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/beam/weaklaser, charge_cost = 60),
)
/obj/item/weapon/gun/energy/frontier/unload_ammo(var/mob/user)
if(recharging)
@@ -778,6 +774,13 @@
/obj/item/weapon/gun/energy/frontier/ex_act() //|rugged|
return
//Needed to fix a bug with the holdout phaser
/obj/item/weapon/gun/energy/frontier/basic
firemodes = list(
list(mode_name="normal", fire_delay=12, projectile_type=/obj/item/projectile/beam, charge_cost = 300),
list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/beam/weaklaser, charge_cost = 60),
)
/obj/item/weapon/gun/energy/frontier/locked
desc = "An extraordinarily rugged laser weapon, built to last and requiring effectively no maintenance. Includes a built-in crank charger for recharging away from civilization. This one has a safety interlock that prevents firing while in proximity to the facility."
req_access = list(access_armory) //for toggling safety
@@ -808,6 +811,13 @@
return 0
return ..()
//Needed to fix a bug with the holdout phaser
/obj/item/weapon/gun/energy/frontier/locked/basic
firemodes = list(
list(mode_name="normal", fire_delay=12, projectile_type=/obj/item/projectile/beam, charge_cost = 300),
list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/beam/weaklaser, charge_cost = 60),
)
//Expeditionary Holdout Phaser
/obj/item/weapon/gun/energy/frontier/locked/holdout
name = "holdout frontier phaser"
@@ -0,0 +1,6 @@
author: KasparoVy
delete-after: True
changes:
- rscadd: "Hiding mobs are now revealed when grabbed, buckled and/or killed."
- rscadd: "You cannot hide if you grab something, are grabbed yourself or are buckled."
- rscadd: "Adds some fluff messages for when hiding mobs are revealed."
Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 127 KiB

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

After

Width:  |  Height:  |  Size: 106 KiB

+7 -6
View File
@@ -95,8 +95,7 @@
prob_fall = 25 //Chance goes down by this much each time it spawns one (not defining and prob_spawn 100 means they spawn as soon as one dies)
guard = 40 //They'll stay within this range (not defining this disables them staying nearby and they will wander the map (and through step teleports))
mobs_to_pick_from = list(
/mob/living/simple_animal/hostile/giant_snake = 3, //Snakes are 3x more likely to spawn than,
/mob/living/simple_animal/hostile/frog = 1 //these frogs are, with these values
/mob/living/simple_animal/snake
)
/obj/tether_away_spawner/beach_outside_friendly
@@ -115,12 +114,14 @@
faction = "beach_cave"
atmos_comp = TRUE
prob_spawn = 100
prob_fall = 10
prob_fall = 40
guard = 20
mobs_to_pick_from = list(
/mob/living/simple_animal/hostile/deathclaw,
/mob/living/simple_animal/hostile/frog,
/mob/living/simple_animal/hostile/hivebot/range/ion
/mob/living/simple_animal/hostile/frog = 3, //Frogs are 3x more likely to spawn than,
/mob/living/simple_animal/hostile/deathclaw = 1, //these deathclaws are, with these values,
/mob/living/simple_animal/hostile/giant_spider = 3,
/mob/living/simple_animal/hostile/giant_snake = 1,
/mob/living/simple_animal/hostile/giant_spider/ion = 2
)
// These are step-teleporters, for map edge transitions
+1 -1
View File
@@ -395,7 +395,7 @@ var/global/list/latejoin_tram = list()
/obj/structure/closet/secure_closet/guncabinet/excursion/New()
..()
for(var/i = 1 to 4)
new /obj/item/weapon/gun/energy/frontier/locked(src)
new /obj/item/weapon/gun/energy/frontier/locked/basic(src)
for(var/i = 1 to 4)
new /obj/item/weapon/gun/energy/frontier/locked/holdout(src)
+2
View File
@@ -2261,6 +2261,7 @@
#include "code\modules\mob\living\simple_animal\animals\fluffy_vr.dm"
#include "code\modules\mob\living\simple_animal\animals\fox_vr.dm"
#include "code\modules\mob\living\simple_animal\animals\giant_spider.dm"
#include "code\modules\mob\living\simple_animal\animals\giant_spider_vr.dm"
#include "code\modules\mob\living\simple_animal\animals\goose.dm"
#include "code\modules\mob\living\simple_animal\animals\lizard.dm"
#include "code\modules\mob\living\simple_animal\animals\miscellaneous.dm"
@@ -2309,6 +2310,7 @@
#include "code\modules\mob\living\simple_animal\vore\fennix.dm"
#include "code\modules\mob\living\simple_animal\vore\frog.dm"
#include "code\modules\mob\living\simple_animal\vore\gaslamp.dm"
#include "code\modules\mob\living\simple_animal\vore\hippo.dm"
#include "code\modules\mob\living\simple_animal\vore\horse.dm"
#include "code\modules\mob\living\simple_animal\vore\jelly.dm"
#include "code\modules\mob\living\simple_animal\vore\otie.dm"