Files
Bubberstation/code/modules/mob/living/basic/pets/dog/strippable_items.dm
SkyratBot f9906ea240 [MIRROR] converts most pet behavior into elements (#29221)
* converts most pet behavior into elements (#85290)

## About The Pull Request
refactors pet behaviors, such as collars and pet cultists into elements.
also this is a first step to completely removing the pet subtype

## Why It's Good For The Game
this means itll be alot easier for coders to make their tameable mobs
able to wear pet collars without having to make them of the pet subtype,
which i also plan to do

## Changelog
🆑
refactor: refactors pet collars and cultist pets into elements
/🆑

* converts most pet behavior into elements

* removing undefined var

---------

Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com>
Co-authored-by: SpaceLoveSs13 <68121607+SpaceLoveSs13@users.noreply.github.com>
2024-08-11 19:59:24 +05:30

149 lines
4.2 KiB
Plaintext

//corgi's stippable items
GLOBAL_LIST_INIT(strippable_corgi_items, create_strippable_list(list(
/datum/strippable_item/corgi_head,
/datum/strippable_item/corgi_back,
/datum/strippable_item/pet_collar,
/datum/strippable_item/corgi_id,
)))
/datum/strippable_item/corgi_head
key = STRIPPABLE_ITEM_HEAD
/datum/strippable_item/corgi_head/get_item(atom/source)
var/mob/living/basic/pet/dog/corgi/corgi_source = source
if(!istype(corgi_source))
return
return corgi_source.inventory_head
/datum/strippable_item/corgi_head/finish_equip(atom/source, obj/item/equipping, mob/user)
var/mob/living/basic/pet/dog/corgi/corgi_source = source
if(!istype(corgi_source))
return
corgi_source.place_on_head(equipping, user)
/datum/strippable_item/corgi_head/finish_unequip(atom/source, mob/user)
var/mob/living/basic/pet/dog/corgi/corgi_source = source
if(!istype(corgi_source))
return
user.put_in_hands(corgi_source.inventory_head)
corgi_source.inventory_head = null
corgi_source.update_corgi_fluff()
corgi_source.update_appearance(UPDATE_OVERLAYS)
/datum/strippable_item/pet_collar
key = STRIPPABLE_ITEM_PET_COLLAR
/datum/strippable_item/pet_collar/get_item(atom/source)
var/mob/living/basic/pet_source = source
if(!istype(pet_source))
return
return (locate(/obj/item/clothing/neck/petcollar) in source)
/datum/strippable_item/pet_collar/try_equip(atom/source, obj/item/equipping, mob/user)
. = ..()
if(!.)
return FALSE
if(!istype(equipping, /obj/item/clothing/neck/petcollar))
to_chat(user, span_warning("That's not a collar."))
return FALSE
return TRUE
/datum/strippable_item/pet_collar/finish_equip(atom/source, obj/item/equipping, mob/user)
user.transferItemToLoc(equipping, source)
/datum/strippable_item/pet_collar/finish_unequip(atom/source, mob/user)
var/obj/item/clothing/neck/petcollar/collar = locate() in source
user.put_in_hands(collar)
/datum/strippable_item/corgi_back
key = STRIPPABLE_ITEM_BACK
/datum/strippable_item/corgi_back/get_item(atom/source)
var/mob/living/basic/pet/dog/corgi/corgi_source = source
if(!istype(corgi_source))
return
return corgi_source.inventory_back
/datum/strippable_item/corgi_back/try_equip(atom/source, obj/item/equipping, mob/user)
. = ..()
if(!.)
return FALSE
if(!ispath(equipping.dog_fashion, /datum/dog_fashion/back))
to_chat(user, span_warning("You set [equipping] on [source]'s back, but it falls off!"))
equipping.forceMove(source.drop_location())
if(prob(25))
step_rand(equipping)
dance_rotate(source, set_original_dir = TRUE)
return FALSE
return TRUE
/datum/strippable_item/corgi_back/finish_equip(atom/source, obj/item/equipping, mob/user)
var/mob/living/basic/pet/dog/corgi/corgi_source = source
if(!istype(corgi_source))
return
equipping.forceMove(corgi_source)
corgi_source.inventory_back = equipping
corgi_source.update_corgi_fluff()
corgi_source.update_appearance(UPDATE_OVERLAYS)
/datum/strippable_item/corgi_back/finish_unequip(atom/source, mob/user)
var/mob/living/basic/pet/dog/corgi/corgi_source = source
if(!istype(corgi_source))
return
user.put_in_hands(corgi_source.inventory_back)
corgi_source.inventory_back = null
corgi_source.update_corgi_fluff()
corgi_source.update_appearance(UPDATE_OVERLAYS)
/datum/strippable_item/corgi_id
key = STRIPPABLE_ITEM_ID
/datum/strippable_item/corgi_id/get_item(atom/source)
var/mob/living/basic/pet/dog/corgi/corgi_source = source
if(!istype(corgi_source))
return
return corgi_source.access_card
/datum/strippable_item/corgi_id/try_equip(atom/source, obj/item/equipping, mob/user)
. = ..()
if(!.)
return FALSE
if(!isidcard(equipping))
to_chat(user, span_warning("You can't pin [equipping] to [source]!"))
return FALSE
return TRUE
/datum/strippable_item/corgi_id/finish_equip(atom/source, obj/item/equipping, mob/user)
var/mob/living/basic/pet/dog/corgi/corgi_source = source
if(!istype(corgi_source))
return
equipping.forceMove(source)
corgi_source.access_card = equipping
/datum/strippable_item/corgi_id/finish_unequip(atom/source, mob/user)
var/mob/living/basic/pet/dog/corgi/corgi_source = source
if(!istype(corgi_source))
return
user.put_in_hands(corgi_source.access_card)
corgi_source.access_card = null
corgi_source.update_corgi_fluff()
corgi_source.update_appearance(UPDATE_OVERLAYS)