disables pc grab growl while travis sucks legs over unrelated map bugs

some minor sprite tweaks

environmental disaster time

more things

bumps front and back rest sprites one p down

Some otie tweaks plus another new variant.
-Stops idle actions on player-controlled oties.
-Disables feeding autobarf (secdonut and rng) on player-controlled oties.
-Disables friending and auto standup on petting when player-controlled.
-Adds a tamed phoron otie with collar. (no ingame access yet so beg for mins)
-Tweaks the bare standing sprites a little. (one pixel shorter with even back stripes)
This commit is contained in:
Verkister
2018-01-29 09:02:48 +02:00
parent e9c7e70e6e
commit 3a4d470604
5 changed files with 72 additions and 23 deletions
+7
View File
@@ -66,3 +66,10 @@
containertype = /obj/structure/largecrate/animal/otie
containername = "VARMAcorp adoptable reject (Dangerous!)"
access = access_xenobiology
/datum/supply_packs/sci/phoronotie
name = "VARMAcorp adaptive beta subject (Experimental)"
cost = 200
containertype = /obj/structure/largecrate/animal/otie/phoron
containername = "VARMAcorp adaptive beta subject (Experimental)"
access = access_xenobiology
+9
View File
@@ -7,6 +7,15 @@
access_security,
access_xenobiology)
/datum/supply_packs/security/guardmutant
name = "VARMAcorp autoNOMous security solution for hostile environments"
cost = 250
containertype = /obj/structure/largecrate/animal/guardmutant
containername = "VARMAcorp autoNOMous security phoron-proof solution crate"
access = list(
access_security,
access_xenobiology)
/datum/supply_packs/security/biosuit
contains = list(
/obj/item/clothing/head/bio_hood/security = 3,
@@ -53,7 +53,8 @@
/mob/living/simple_animal/hostile/bear;0.5,
/mob/living/simple_animal/hostile/bear/brown;0.5,
/mob/living/simple_animal/hostile/carp,
/mob/living/simple_animal/hostile/mimic)
/mob/living/simple_animal/hostile/mimic,
/mob/living/simple_animal/otie;0.5)
..()
@@ -78,16 +79,28 @@
desc = "The VARMAcorp bioengineering division flagship product on trained optimal snowflake guard dogs."
icon = 'icons/obj/storage_vr.dmi'
icon_state = "sotiecrate"
held_type = /mob/living/simple_animal/otie/friendly/security
held_type = /mob/living/simple_animal/otie/security
/obj/structure/largecrate/animal/guardmutant
name = "VARMAcorp autoNOMous security solution for hostile environments."
desc = "The VARMAcorp bioengineering division flagship product on trained optimal snowflake guard dogs. This one can survive hostile atmosphere."
icon = 'icons/obj/storage_vr.dmi'
icon_state = "sotiecrate"
held_type = /mob/living/simple_animal/otie/security/phoron
/obj/structure/largecrate/animal/otie
name = "VARMAcorp adoptable reject (Dangerous!)"
desc = "A warning on the side says the creature inside was returned to the supplier after injuring or devouring several unlucky members of the previous adoption family. It was given a second chance with the next customer. Godspeed and good luck with your new pet!"
icon = 'icons/obj/storage_vr.dmi'
icon_state = "otiecrate2"
held_type = /mob/living/simple_animal/otie/friendly/cotie
held_type = /mob/living/simple_animal/otie/cotie
var/taped = 1
/obj/structure/largecrate/animal/otie/phoron
name = "VARMAcorp adaptive beta subject (Experimental)"
desc = "VARMAcorp experimental hostile environment adaptive breeding development kit. WARNING, DO NOT RELEASE IN WILD!"
held_type = /mob/living/simple_animal/otie/cotie/phoron
/obj/structure/largecrate/animal/otie/attack_hand(mob/living/carbon/human/M as mob)//I just couldn't decide between the icons lmao
if(taped == 1)
playsound(src, 'sound/items/poster_ripped.ogg', 50, 1)
@@ -83,15 +83,32 @@
faction = "neutral"
tamed = 1
/mob/living/simple_animal/otie/friendly/cotie //same as above but has a little collar :v
/mob/living/simple_animal/otie/cotie //same as above but has a little collar :v
name = "tamed otie"
desc = "The classic bioengineered longdog. This one has a nice little collar on its neck. However a proper domesticated otie is an oxymoron and the collar is likely just a decoration."
icon_state = "cotie"
icon_living = "cotie"
icon_rest = "cotie_rest"
faction = "neutral"
tamed = 1
/mob/living/simple_animal/otie/friendly/security //tame by default unless you're a marked crimester. can be befriended to follow with pets tho.
/mob/living/simple_animal/otie/cotie/phoron //friendly phoron pup with collar
name = "mutated otie"
desc = "Looks like someone did manage to domesticate one of those wild phoron mutants. What a badass."
icon_state = "pcotie"
icon_living = "pcotie"
icon_rest = "pcotie_rest"
icon_dead = "siftusian-dead"
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/otie/security //tame by default unless you're a marked crimester. can be befriended to follow with pets tho.
name = "guard otie"
desc = "The VARMAcorp bioengineering division flagship product on trained optimal snowflake guard dogs."
icon_state = "sotie"
@@ -101,23 +118,22 @@
faction = "neutral"
maxHealth = 200 //armored or something
health = 200
tamed = 1
loot_list = list(/obj/item/clothing/glasses/sunglasses/sechud,/obj/item/clothing/suit/armor/vest/alt)
vore_pounce_chance = 60 // Good boys don't do too much police brutality.
var/check_records = 0 // If true, arrests people without a record.
var/check_arrest = 1 // If true, arrests people who are set to arrest.
/mob/living/simple_animal/otie/friendly/security/phoron
/mob/living/simple_animal/otie/security/phoron
name = "mutated guard otie"
desc = "An extra rare phoron resistant version of the VARMAcorp trained snowflake guard dogs."
icon_state = "sifguard"
icon_living = "sifguard"
icon_rest = "sifguard_rest"
icon_dead = "sifguard-dead"
melee_damage_lower = 10
melee_damage_upper = 25
// Lazy way of making sure this otie survives outside.
min_oxy = 0
max_oxy = 0
min_tox = 0
@@ -154,7 +170,7 @@
else
return null
/mob/living/simple_animal/otie/friendly/security/Found(var/atom/found_atom)
/mob/living/simple_animal/otie/security/Found(var/atom/found_atom)
if(check_threat(found_atom) >= 4)
if(resting)
lay_down()
@@ -165,7 +181,9 @@
if(istype(O, /obj/item/weapon/reagent_containers/food))
qdel(O)
playsound(src.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/donut) && istype(src, /mob/living/simple_animal/otie/friendly/security))
if(ai_inactive)//No autobarf on player control.
return
if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/donut) && istype(src, /mob/living/simple_animal/otie/security))
user << "<span class='notice'>The guard pup accepts your offer for their catch.</span>"
for(var/I in vore_organs)
var/datum/belly/B = vore_organs[I]
@@ -179,7 +197,7 @@
return
..()
/mob/living/simple_animal/otie/friendly/security/feed_grabbed_to_self(var/mob/living/user, var/mob/living/prey) // Make the gut start out safe for bellybrigging.
/mob/living/simple_animal/otie/security/feed_grabbed_to_self(var/mob/living/user, var/mob/living/prey) // Make the gut start out safe for bellybrigging.
var/datum/belly/B = user.vore_selected
var/datum/belly/belly_target = user.vore_organs[B]
if(ishuman(target_mob))
@@ -188,12 +206,12 @@
belly_target.digest_mode = DM_DIGEST
..()
/mob/living/simple_animal/otie/friendly/security/proc/check_threat(var/mob/living/M)
/mob/living/simple_animal/otie/security/proc/check_threat(var/mob/living/M)
if(!M || !ishuman(M) || M.stat == DEAD || src == M)
return 0
return M.assess_perp(0, 0, 0, check_records, check_arrest)
/mob/living/simple_animal/otie/friendly/security/set_target(var/mob/M)
/mob/living/simple_animal/otie/security/set_target(var/mob/M)
ai_log("SetTarget([M])",2)
if(!M || (world.time - last_target_time < 5 SECONDS) && target_mob)
ai_log("SetTarget() can't set it again so soon",3)
@@ -221,7 +239,7 @@
return 0
/mob/living/simple_animal/otie/friendly/security/proc/target_name(mob/living/T)
/mob/living/simple_animal/otie/security/proc/target_name(mob/living/T)
if(ishuman(T))
var/mob/living/carbon/human/H = T
return H.get_id_name("unidentified person")
@@ -229,8 +247,13 @@
//Basic friend AI
/mob/living/simple_animal/otie/friendly/Life()
..()
/mob/living/simple_animal/otie/Life()
. = ..()
if(!. || ai_inactive) return
if(prob(5) && (stance == STANCE_IDLE))
lay_down()
if(!friend) return
var/friend_dist = get_dist(src,friend)
@@ -262,13 +285,6 @@
var/verb = pick("whines", "yelps", "whimpers")
audible_emote("[verb] anxiously.")
/mob/living/simple_animal/otie/Life()
. = ..()
if(!. || ai_inactive) return
if(prob(5) && (stance == STANCE_IDLE))
lay_down()
//Pet 4 friendly
/mob/living/simple_animal/otie/attack_hand(mob/living/carbon/human/M as mob)
@@ -277,6 +293,8 @@
if(I_HELP)
if(health > 0)
M.visible_message("<span class='notice'>[M] [response_help] \the [src].</span>")
if(ai_inactive)
return
LoseTarget()
handle_stance(STANCE_IDLE)
if(prob(tame_chance))
@@ -288,6 +306,8 @@
if(I_GRAB)
if(health > 0)
if(ai_inactive)
return
audible_emote("growls disapprovingly at [M].")
if(M == friend)
friend = null
Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 KiB

After

Width:  |  Height:  |  Size: 169 KiB