mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-17 02:54:44 +01:00
f9906ea240
* 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>
149 lines
4.2 KiB
Plaintext
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)
|