Merge pull request #1819 from Verkister/otiefix

Fixes Otie stuff and adds light replacer for trashdog.
This commit is contained in:
Spades
2017-07-07 01:27:31 -04:00
committed by GitHub
4 changed files with 83 additions and 29 deletions
@@ -310,3 +310,30 @@
hitsound = 'sound/weapons/blade1.ogg'
attack_verb = list("slashed", "stabbed", "jabbed", "mauled", "sliced")
w_class = ITEMSIZE_NORMAL
/obj/item/device/lightreplacer/dogborg
name = "light replacer"
desc = "A device to automatically replace lights. This version is capable to produce a few replacements using your internal matter reserves."
max_uses = 16
var/cooldown = 0
/obj/item/device/lightreplacer/dogborg/attack_self(mob/user)//Boo recharger fill is slow as shit and removes all the extra cyberfat gains you worked so hard for!
if(uses >= max_uses)
user << "<span class='warning'>[src.name] is full.</span>"
return
if(uses < max_uses && cooldown == 0)
var/mob/living/silicon/robot.R = user
if(R.cell.charge <= 800)
user << "<span class='warning'>Insufficient power reserves. Please recharge.</span>"
return
usr << "It has [uses] lights remaining. Attempting to fabricate a replacement. Please stand still."
cooldown = 1
if(do_after(user, 50))
R.cell.charge = R.cell.charge - 400
AddUses(1)
cooldown = 0
else
cooldown = 0
else
usr << "It has [uses] lights remaining."
return
@@ -514,11 +514,12 @@
return
return
/mob/living/silicon/robot/attackby(obj/item/target as obj, mob/user as mob)
/mob/living/silicon/robot/attackby(obj/item/W as obj, mob/user as mob)
if(module_active && istype(module_active,/obj/item/device/dogborg/sleeper/compactor)) //Feeding?
if(user.a_intent == I_HELP)
var/obj/item/device/dogborg/sleeper/compactor = src.module_active
compactor.afterattack(target)
if(src == user)
return
return
..()
if(user.a_intent == I_HELP)
var/obj/item/device/dogborg/sleeper/compactor/CR = module_active
user << "You attempt to feed [W] to [src]."
W.attackby(CR,src)
return ..()
@@ -118,7 +118,7 @@
can_be_pushed = 0
/obj/item/weapon/robot_module/scrubpup/New(var/mob/living/silicon/robot/R)
src.modules += new /obj/item/device/lightreplacer(src)
src.modules += new /obj/item/device/lightreplacer/dogborg(src)
src.modules += new /obj/item/weapon/dogborg/jaws/small(src)
src.modules += new /obj/item/device/dogborg/boop_module(src)
src.modules += new /obj/item/device/dogborg/tongue(src)
@@ -8,8 +8,8 @@
icon_rest = "otie_rest"
faction = "otie"
recruitable = 1
maxHealth = 100
health = 100
maxHealth = 150
health = 150
minbodytemp = 200
move_to_delay = 4
hostile = 1
@@ -29,7 +29,7 @@
say_got_target = list("Rurrr!", "ROAR!", "MARR!", "RAHH!", "Slurp.. RAH!")
say_got_target = list("Rurrr!", "ROAR!", "RERR!", "NOM!", "MINE!", "RAHH!", "RAH!", "WARF!")
melee_damage_lower = 5
melee_damage_upper = 20
melee_damage_upper = 15 //Don't break my bones bro
response_help = "pets the"
response_disarm = "bops the"
response_harm = "hits the"
@@ -53,6 +53,8 @@
icon_dead = "siftusian-dead"
icon_rest = "siftusian_rest"
tame_chance = 5 // Only a 1 in 20 chance of success. It's feral. What do you expect?
melee_damage_lower = 10
melee_damage_upper = 25
// Lazy way of making sure this otie survives outside.
min_oxy = 0.5
max_oxy = 0
@@ -85,8 +87,8 @@
icon_dead = "sotie-dead"
faction = "neutral"
tamed = 1
maxHealth = 150 //armored or something
health = 150
maxHealth = 200 //armored or something
health = 200
loot_list = list(/obj/item/clothing/glasses/sunglasses/sechud,/obj/item/clothing/suit/armor/vest/alt)
var/check_records = 1 // If true, arrests people without a record.
@@ -108,14 +110,16 @@
var/mob/found_mob = found_atom
if(found_mob.faction == faction)
return null
else if (friend == found_atom)
return null
else if(tamed == 1 && ishuman(found_atom))
return null
else if(tamed == 1 && isrobot(found_atom))
return null
else if(friend == found_atom)
return null
else if(tamed == 1 && ishuman(found_atom))
return null
else if(tamed == 1 && isrobot(found_atom))
return null
else
return found_atom
else
return found_atom
return null
/mob/living/simple_animal/otie/friendly/security/Found(var/atom/found_atom)
if(!SA_attackable(found_atom))
@@ -130,14 +134,16 @@
var/mob/found_mob = found_atom
if(found_mob.faction == faction)
return null
else if (friend == found_atom)
return null
else if(tamed == 1 && ishuman(found_atom))
return null
else if(tamed == 1 && isrobot(found_atom))
return null
else if(friend == found_atom)
return null
else if(tamed == 1 && ishuman(found_atom))
return null
else if(tamed == 1 && isrobot(found_atom))
return null
else
return found_atom
else
return found_atom
return null
/mob/living/simple_animal/otie/friendly/security/proc/check_threat(var/mob/living/M)
if(!M || !ishuman(M) || M.stat == DEAD || src == M)
@@ -205,7 +211,9 @@
"rubs against [friend].",
"noses softly at [friend].",
"slobberlicks [friend].",
"murrs."))
"murrs.",
"leans on [friend].",
"nibbles affectionately on [friend]."))
else if (friend.health <= 50)
if (prob(10))
var/verb = pick("whines", "yelps", "whimpers")
@@ -222,6 +230,24 @@
/mob/living/simple_animal/otie/attack_hand(mob/living/carbon/human/M as mob)
..()
if(M.a_intent == I_GRAB)
if (M == src)
return
if (!(status_flags & CANPUSH))
return
if(!incapacitated(INCAPACITATION_ALL) && (stance != STANCE_IDLE) && prob(grab_resist))
M.visible_message("<span class='warning'>[M] tries to grab [src] but fails!</span>")
return
var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M, src)
M.put_in_active_hand(G)
G.synch()
G.affecting = src
LAssailant = M
M.visible_message("<span class='warning'>[M] has grabbed [src] passively!</span>")
M.do_attack_animation(src)
ai_log("attack_hand() I was grabbed by: [M]",2)
pixel_x = old_x
react_to_attack(M)
if(M.a_intent == I_HELP)
if (health > 0)
LoseTarget()
@@ -240,6 +266,6 @@
/mob/living/simple_animal/otie
vore_active = 1
vore_capacity = 1
vore_escape_chance = 8
vore_pounce_chance = 16
vore_escape_chance = 15
vore_pounce_chance = 20
vore_icons = SA_ICON_LIVING