mirror of
https://github.com/KabKebab/GS13.git
synced 2026-07-10 07:30:36 +01:00
@@ -0,0 +1,119 @@
|
||||
/mob/living/simple_animal/pet/slugcat
|
||||
name = "slugcat"
|
||||
desc = "It's a cat . . . Thing from another planet, maybe from another world. You think it's not dangerous, but you can't be sure. "
|
||||
icon = 'GainStation13/icons/mob/pets.dmi'
|
||||
icon_state = "slugcat"
|
||||
icon_living = "slugcat"
|
||||
icon_dead = "slugcat_dead"
|
||||
emote_see = list("stares at the ceiling.", "shivers.")
|
||||
speak_chance = 1
|
||||
turns_per_move = 20
|
||||
can_be_held = TRUE
|
||||
see_in_dark = 6
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
pass_flags = PASSTABLE
|
||||
mob_size = MOB_SIZE_SMALL
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||
minbodytemp = 200
|
||||
maxbodytemp = 400
|
||||
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 2)
|
||||
unsuitable_atmos_damage = 0.5
|
||||
animal_species = /mob/living/simple_animal/pet/slugcat
|
||||
response_help = "pets"
|
||||
response_disarm = "gently pushes aside"
|
||||
response_harm = "kicks"
|
||||
gold_core_spawnable = FRIENDLY_SPAWN
|
||||
attack_sound = 'sound/effects/attackblob.ogg'
|
||||
do_footstep = TRUE
|
||||
gold_core_spawnable = FRIENDLY_SPAWN
|
||||
size_multiplier = 0.5
|
||||
obj_damage = 0
|
||||
melee_damage_lower = 0
|
||||
melee_damage_upper = 0
|
||||
var/held_icon = "slugcat"
|
||||
do_footstep = TRUE
|
||||
//lizard food
|
||||
devourable = 1
|
||||
digestable = 1
|
||||
feeding = 1
|
||||
var/obj/item/twohanded/spear/weapon
|
||||
|
||||
/mob/living/simple_animal/pet/slugcat/Initialize()
|
||||
. = ..()
|
||||
add_verb(src, /mob/living/proc/lay_down)
|
||||
|
||||
/mob/living/simple_animal/pet/slugcat/ComponentInitialize()
|
||||
. = ..()
|
||||
AddElement(/datum/element/wuv, "purrs!", EMOTE_AUDIBLE, /datum/mood_event/pet_animal, "hisses!", EMOTE_AUDIBLE)
|
||||
AddElement(/datum/element/mob_holder, held_icon)
|
||||
|
||||
/mob/living/simple_animal/pet/slugcat/update_canmove()
|
||||
..()
|
||||
if(client && stat != DEAD)
|
||||
if (resting)
|
||||
icon_state = "[icon_living]_rest"
|
||||
else
|
||||
icon_state = "[icon_living]"
|
||||
regenerate_icons()
|
||||
|
||||
/mob/living/simple_animal/pet/slugcat/UnarmedAttack(atom/A)
|
||||
. = ..()
|
||||
if(!isitem(A))
|
||||
return
|
||||
|
||||
if(!weapon && istype(A, /obj/item/twohanded/spear))
|
||||
visible_message("<span class='notice'>[src] pick up the [A].</span>", "<span class='notice'>You pick up the [A].</span>")
|
||||
weapon = A
|
||||
weapon.forceMove(src)
|
||||
melee_damage_lower = weapon.force + weapon.force_wielded
|
||||
melee_damage_upper = weapon.force + weapon.force_wielded
|
||||
armour_penetration = weapon.armour_penetration
|
||||
melee_damage_type = weapon.damtype
|
||||
attack_sound = weapon.hitsound
|
||||
update_icons()
|
||||
else if(!weapon && !istype(A, /obj/item/twohanded/spear))
|
||||
to_chat(src, "<span class='warning'>You do not know how to wield the [A]!</span>")
|
||||
|
||||
/mob/living/simple_animal/pet/slugcat/RangedAttack(atom/A, params)
|
||||
. = ..()
|
||||
if(!weapon)
|
||||
return
|
||||
visible_message("<span class='warning'>[src] throws the [weapon] at [A]!</span>","<span class='warning'>You throw the [weapon] at [A]!</span>")
|
||||
melee_damage_lower = initial(melee_damage_lower)
|
||||
melee_damage_upper = initial(melee_damage_upper)
|
||||
armour_penetration = initial(armour_penetration)
|
||||
melee_damage_type = initial(melee_damage_type)
|
||||
attack_sound = initial(attack_sound)
|
||||
weapon.forceMove(get_turf(src))
|
||||
weapon.throw_at(A, weapon.throw_range, weapon.throw_speed, src)
|
||||
weapon = null
|
||||
update_icons()
|
||||
|
||||
/mob/living/simple_animal/pet/slugcat/update_icons()
|
||||
. = ..()
|
||||
if(stat == DEAD || resting)
|
||||
return
|
||||
icon_state = weapon ? initial(icon_state) + "_spear" : initial(icon_state)
|
||||
|
||||
/mob/living/simple_animal/pet/slugcat/death(gibbed)
|
||||
if(weapon)
|
||||
weapon.forceMove(get_turf(src))
|
||||
weapon = null
|
||||
update_icons()
|
||||
. = ..()
|
||||
|
||||
/mob/living/simple_animal/pet/slugcat/attack_ghost(mob/user)
|
||||
if(key)
|
||||
return
|
||||
if(CONFIG_GET(flag/use_age_restriction_for_jobs))
|
||||
if(!isnum(user.client.player_age))
|
||||
return
|
||||
if(!SSticker.mode)
|
||||
to_chat(user, "Can't become a slugcat before the game has started.")
|
||||
return
|
||||
var/be_scug = alert("Become a slugcat? (Warning, You can no longer be cloned!)",,"Yes","No")
|
||||
if(be_scug == "No" || QDELETED(src) || !isobserver(user))
|
||||
return
|
||||
sentience_act()
|
||||
key = user.key
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.4 KiB |
@@ -172,3 +172,10 @@
|
||||
/mob/living/simple_animal/hostile/retaliate/bat/secbat,
|
||||
/mob/living/simple_animal/hostile/retaliate/bat/secbat)
|
||||
crate_name = "security bat crate"
|
||||
|
||||
/datum/supply_pack/critter/slugcat
|
||||
name = "Slugcat Crate"
|
||||
desc = "It's a cat . . . Thing from another planet, maybe from another world.contain one slugcat."
|
||||
cost = 5000
|
||||
contains = list(/mob/living/simple_animal/pet/slugcat)
|
||||
crate_name = "slugcat crate"
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 9.8 KiB After Width: | Height: | Size: 11 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 9.9 KiB After Width: | Height: | Size: 11 KiB |
@@ -3092,6 +3092,7 @@
|
||||
#include "GainStation13\code\mechanics\den abductors\purchaseble_goodies.dm"
|
||||
#include "GainStation13\code\mobs\cakegolem.dm"
|
||||
#include "GainStation13\code\mobs\chocoslime.dm"
|
||||
#include "GainStation13\code\mobs\slugcat.dm"
|
||||
#include "GainStation13\code\mobs\races\caloritegolem.dm"
|
||||
#include "GainStation13\code\modules\client\preferences\preferences.dm"
|
||||
#include "GainStation13\code\modules\clothing\under\jobs\modcivilian.dm"
|
||||
|
||||
Reference in New Issue
Block a user