Skip to content

Commit

Permalink
bugfix: Slugcat collar unequiping. (#3982)
Browse files Browse the repository at this point in the history
  • Loading branch information
Daeberdir authored Dec 2, 2023
1 parent 3970484 commit 7b59ce6
Showing 1 changed file with 58 additions and 50 deletions.
108 changes: 58 additions & 50 deletions code/modules/mob/living/simple_animal/friendly/slugcat.dm
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/mob/living/simple_animal/pet/slugcat
name = "слизнекот"
desc = "Удивительное существо, напоминающая кота и слизня в одном обличии. Но это не слизь, а иной вид существа. Гордость ксенобиологии. Крайне ловкое и умное, родом с планеты с опасной средой обитания. Обожает копья, не стоит давать ему его в лапки. На нем отлично смотрятся шляпы."
desc = "Удивительное существо, напоминающее кота и слизня в одном обличии. Но это не слизь, а иной вид существа. Гордость ксенобиологии. Крайне ловкое и умное, родом с планеты с опасной средой обитания. Обожает копья, не стоит давать ему его в лапки. На нём отлично смотрятся шляпы."
icon_state = "slugcat"
icon_living = "slugcat"
icon_dead = "slugcat_dead"
Expand All @@ -15,11 +15,11 @@
melee_damage_type = STAMINA
melee_damage_lower = 0
melee_damage_upper = 0
attacktext = "бьет"
attacktext = "бьёт"
mob_size = MOB_SIZE_SMALL
pass_flags = PASSTABLE
ventcrawler = VENTCRAWLER_ALWAYS
can_collar = 1
can_collar = TRUE
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 5)
response_help = "pets"
response_disarm = "gently pushes aside"
Expand All @@ -28,7 +28,7 @@
footstep_type = FOOTSTEP_MOB_SLIME
tts_seed = "Narrator"
faction = list("slime","neutral")
//holder_type = /obj/item/holder/cat2
//holder_type = /obj/item/holder/cat2 //soon

//Шляпы для слизнекота!
var/obj/item/inventory_head
Expand All @@ -46,7 +46,7 @@

/mob/living/simple_animal/pet/slugcat/monk
name = "слизнекот-монах"
desc = "Удивительное существо, напоминающая кота и слизня в одном обличии. Но это не слизь, а иной вид существа. Гордость ксенобиологии. Крайне ловкое и умное, родом с планеты с опасной средой обитания. Не любит охоту и не умеет пользоваться копьями. На нем отлично смотрятся шляпы."
desc = "Удивительное существо, напоминающее кота и слизня в одном обличии. Но это не слизь, а иной вид существа. Гордость ксенобиологии. Крайне ловкое и умное, родом с планеты с опасной средой обитания. Не любит охоту и не умеет пользоваться копьями. На нём отлично смотрятся шляпы."
icon_state = "slugcat_monk"
icon_living = "slugcat_monk"
icon_dead = "slugcat_monk_dead"
Expand All @@ -58,7 +58,7 @@

/mob/living/simple_animal/pet/slugcat/hunter
name = "слизнекот-охотник"
desc = "Удивительное существо, напоминающая кота и слизня в одном обличии. Но это не слизь, а иной вид существа. Гордость ксенобиологии. Крайне ловкое и умное, родом с планеты с опасной средой обитания. Обожает копья и умело управляется ими, не стоит давать ему его в лапки. На нем отлично смотрятся шляпы."
desc = "Удивительное существо, напоминающее кота и слизня в одном обличии. Но это не слизь, а иной вид существа. Гордость ксенобиологии. Крайне ловкое и умное, родом с планеты с опасной средой обитания. Обожает копья и умело управляется ими, не стоит давать ему его в лапки. На нём отлично смотрятся шляпы."
icon_state = "slugcat_hunter"
icon_living = "slugcat_hunter"
icon_dead = "slugcat_hunter_dead"
Expand Down Expand Up @@ -106,15 +106,15 @@

/mob/living/simple_animal/pet/slugcat/Topic(href, href_list)
if(..())
return 1
return TRUE

if(!(iscarbon(usr) || usr.incapacitated() || !Adjacent(usr)))
usr << browse(null, "window=mob[UID()]")
usr.unset_machine()
return

if (stat == DEAD)
return 0
if(stat == DEAD)
return FALSE

if(href_list["remove_inv"])
var/remove_from = href_list["remove_inv"]
Expand All @@ -123,6 +123,12 @@
remove_from_head(usr)
if("hand")
remove_from_hand(usr)
if("collar")
if(pcollar)
var/the_collar = pcollar
drop_item_ground(pcollar)
usr.put_in_hands(the_collar, ignore_anim = FALSE)
pcollar = null
show_inv(usr)

else if(href_list["add_inv"])
Expand All @@ -132,10 +138,12 @@
place_on_head(usr.get_active_hand(), usr)
if("hand")
place_to_hand(usr.get_active_hand(), usr)
if("collar")
add_collar(usr.get_active_hand(), usr)
show_inv(usr)

if(usr != src)
return 1
return TRUE

/mob/living/simple_animal/pet/slugcat/regenerate_icons()
overlays.Cut()
Expand Down Expand Up @@ -177,7 +185,7 @@

var/obj/item/twohanded/spear = inventory_hand

attacktext = "бьет копьем"
attacktext = "бьёт копьём"
attack_sound = 'sound/weapons/bladeslice.ogg'
melee_damage_type = BRUTE
melee_damage_lower = round(spear.force_unwielded / (is_reduce_damage ? 2 : 1))
Expand Down Expand Up @@ -212,54 +220,54 @@
var/dat = {"<meta charset="UTF-8"><div align='center'><b>Inventory of [name]</b></div><p>"}
dat += "<br><B>Head:</B> <A href='?src=[UID()];[inventory_head ? "remove_inv=head'>[inventory_head]" : "add_inv=head'>Nothing"]</A>"
dat += "<br><B>Hand:</B> <A href='?src=[UID()];[inventory_hand ? "remove_inv=hand'>[inventory_hand]" : "add_inv=hand'>Nothing"]</A>"

dat += "<br><B>Collar:</B> <A href='?src=[UID()];[pcollar ? "remove_inv=collar'>[pcollar]" : "add_inv=collar'>Nothing"]</A>"
var/datum/browser/popup = new(user, "mob[UID()]", "[src]", 440, 250)
popup.set_content(dat)
popup.open()

/mob/living/simple_animal/pet/slugcat/proc/place_on_head(obj/item/item_to_add, mob/user)
if(!item_to_add)
user.visible_message("<span class='notice'>[user] похлопывает по голове [src.name].</span>", "<span class='notice'>Вы положили руку на голову [src.name].</span>")
if(flags_2 & HOLOGRAM_2)
return 0
return 0
if(flags_2 & HOLOGRAM_2) //Can't touch ephemeral dudes(
return FALSE
user.visible_message(span_notice("[user] похлопывает по голове [src.name]."), span_notice("Вы положили руку на голову [src.name]."))
return FALSE

if(!istype(item_to_add, /obj/item/clothing/head))
to_chat(user, "<span class='warning'>[item_to_add.name] нельзя надеть на голову [src.name]!</span>")
return 0
to_chat(user, span_warning("[item_to_add.name] нельзя надеть на голову [src.name]!"))
return FALSE

if(inventory_head)
if(user)
to_chat(user, "<span class='warning'>Нельзя надеть больше одного головного убора на голову [src.name]!</span>")
return 0
to_chat(user, span_warning("Нельзя надеть больше одного головного убора на голову [src.name]!"))
return FALSE

if(user && !user.drop_transfer_item_to_loc(item_to_add, src))
to_chat(user, "<span class='warning'>[item_to_add.name] застрял в ваших руках, вы не можете его надеть на голову [src.name]!</span>")
return 0
to_chat(user, span_warning("[item_to_add.name] застрял в ваших руках, вы не можете его надеть на голову [src.name]!"))
return FALSE

user.visible_message("<span class='notice'>[user] надевает [item_to_add].name на голову [real_name].</span>",
"<span class='notice'>Вы надеваете [item_to_add.name] на голову [real_name].</span>",
"<span class='italics'>Вы слышите как что-то нацепили.</span>")
user.visible_message(span_notice("[user] надевает [item_to_add.name] на голову [real_name]."),
span_notice("Вы надеваете [item_to_add.name] на голову [real_name]."),
span_italics("Вы слышите как что-то нацепили."))
inventory_head = item_to_add
regenerate_icons()

return 1
return TRUE

/mob/living/simple_animal/pet/slugcat/proc/remove_from_head(mob/user)
if(inventory_head)
if(inventory_head.flags & NODROP)
to_chat(user, "<span class='warning'>[inventory_head.name] застрял на голове [src.name]! Его невозможно снять!</span>")
to_chat(user, span_warning("[inventory_head.name] застрял на голове [src.name]! Его невозможно снять!"))
return TRUE

to_chat(user, "<span class='warning'>Вы сняли [inventory_head.name] с головы [src.name].</span>")
to_chat(user, span_warning("Вы сняли [inventory_head.name] с головы [src.name]."))
drop_item_ground(inventory_head)
user.put_in_hands(inventory_head, ignore_anim = FALSE)

null_hat()

regenerate_icons()
else
to_chat(user, "<span class='warning'>На голове [src.name] нет головного убора!</span>")
to_chat(user, span_warning("На голове [src.name] нет головного убора!"))
return FALSE

return TRUE
Expand All @@ -278,37 +286,37 @@

/mob/living/simple_animal/pet/slugcat/proc/place_to_hand(obj/item/item_to_add, mob/user)
if(!item_to_add)
user.visible_message("<span class='notice'>[user] пощупал лапки [src].</span>", "<span class='notice'>Вы пощупали лапки [src].</span>")
if(flags_2 & HOLOGRAM_2)
return 0
return 0
if(flags_2 & HOLOGRAM_2) //Can't touch ephemeral dudes(
return FALSE
user.visible_message(span_notice("[user] пощупал лапки [src]."), span_notice("Вы пощупали лапки [src]."))
return FALSE

if(resting)
to_chat(user, "<span class='warning'>[src.name] спит и не принимает [item_to_add.name]!</span>")
return 0
to_chat(user, span_warning("[src.name] спит и не принимает [item_to_add.name]!"))
return FALSE

if(!istype(item_to_add, /obj/item/twohanded/spear))
to_chat(user, "<span class='warning'>[src.name] не принимает [item_to_add.name]!</span>")
return 0
to_chat(user, span_warning("[src.name] не принимает [item_to_add.name]!"))
return FALSE
if(inventory_hand)
if(user)
to_chat(user, "<span class='warning'>Лапки [src.name] заняты [inventory_hand.name]!</span>")
return 0
to_chat(user, span_warning("Лапки [src.name] заняты [inventory_hand.name]!"))
return FALSE

if(user && !user.drop_item_ground(item_to_add))
to_chat(user, "<span class='warning'>[item_to_add.name] застрял в ваших руках, вы не можете его дать [src.name]!</span>")
return 0
to_chat(user, span_warning("[item_to_add.name] застрял в ваших руках, вы не можете его дать [src.name]!"))
return FALSE

if(is_pacifist)
to_chat(user, "<span class='warning'>[src.name] пацифист и не пользуется [item_to_add.name]!</span>")
return 0
to_chat(user, span_warning("[src.name] пацифист и не пользуется [item_to_add.name]!"))
return FALSE

user.visible_message("<span class='notice'>[real_name] выхватывает [item_to_add] с рук [user].</span>",
"<span class='notice'>[real_name] выхватывает [item_to_add] с ваших рук.</span>",
"<span class='italics'>Вы видите довольные глаза.</span>")
user.visible_message(span_notice("[real_name] выхватывает [item_to_add] с рук [user]."),
span_notice("[real_name] выхватывает [item_to_add] с ваших рук."),
span_italics("Вы видите довольные глаза."))
move_item_to_hand(item_to_add)

return 1
return TRUE

/mob/living/simple_animal/pet/slugcat/proc/move_item_to_hand(obj/item/item_to_add)
item_to_add.forceMove(src)
Expand All @@ -318,18 +326,18 @@
/mob/living/simple_animal/pet/slugcat/proc/remove_from_hand(mob/user)
if(inventory_hand)
if(inventory_hand.flags & NODROP)
to_chat(user, "<span class='warning'>[inventory_hand.name] застрял в лапах [src]! Его невозможно отнять!</span>")
to_chat(user, span_warning("[inventory_hand.name] застрял в лапах [src]! Его невозможно отнять!"))
return TRUE

to_chat(user, "<span class='warning'>Вы забрали [inventory_hand.name] с лап [src].</span>")
to_chat(user, span_warning("Вы забрали [inventory_hand.name] с лап [src]."))
drop_item_ground(inventory_hand)
user.put_in_hands(inventory_hand, ignore_anim = FALSE)

null_hand()

regenerate_icons()
else
to_chat(user, "<span class='warning'>В лапах [src] нечего отбирать!</span>")
to_chat(user, span_warning("В лапах [src] нечего отбирать!"))
return FALSE

return TRUE
Expand Down

0 comments on commit 7b59ce6

Please sign in to comment.