diff --git a/code/__DEFINES/clothing.dm b/code/__DEFINES/clothing.dm index ec9ad2f2128..6e1934a77ae 100644 --- a/code/__DEFINES/clothing.dm +++ b/code/__DEFINES/clothing.dm @@ -32,7 +32,8 @@ #define slot_r_ear 20 #define slot_wear_pda 21 #define slot_tie 22 -#define slots_amt 22 +#define slot_collar 23 +#define slots_amt 23 //Cant seem to find a mob bitflags area other than the powers one diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index ffd3f91cf5c..3ac858a8a6c 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -788,6 +788,7 @@ Pass a positive integer as an argument to override a bot's default speed. frustration = 0 /mob/living/simple_animal/bot/show_inv() + return /mob/living/simple_animal/bot/proc/show_controls(mob/M) users |= M diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm index 2f45d3e802e..dfc0bce32a3 100644 --- a/code/modules/mob/living/simple_animal/friendly/corgi.dm +++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm @@ -58,7 +58,7 @@ dat += "Back:[(inventory_back && !(inventory_back.flags&ABSTRACT)) ? inventory_back : "Empty"]" if(can_collar) dat += " " - dat += "Collar:[(collar && !(collar.flags&ABSTRACT)) ? collar : "Empty"]" + dat += "Collar:[(collar && !(collar.flags&ABSTRACT)) ? collar : "Empty"]" dat += {" Close diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index eae08eb4d0c..d2b03557479 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -579,21 +579,7 @@ density = initial(density) update_canmove() -/mob/living/simple_animal/show_inv(mob/user as mob) - user.set_machine(src) - var/dat = {" - - - "} - if(can_collar) - dat += "" - dat += {"
Left Hand:[(l_hand && !(l_hand.flags&ABSTRACT)) ? l_hand : "Empty"]
Right Hand:[(r_hand && !(r_hand.flags&ABSTRACT)) ? r_hand : "Empty"]
 
Collar:[(collar && !(collar.flags&ABSTRACT)) ? collar : "Empty"]
- Close - "} - var/datum/browser/popup = new(user, "mob\ref[src]", "[src]", 440, 250) - popup.set_content(dat) - popup.open() /mob/living/simple_animal/proc/make_babies() // <3 <3 <3 if(gender != FEMALE || stat || !scan_ready || !childtype || !simplespecies) @@ -652,57 +638,74 @@ if(changed) animate(src, transform = ntransform, time = 2, easing = EASE_IN|EASE_OUT) -/mob/living/simple_animal/Topic(href, href_list) - if(!usr.stat && usr.canmove && !usr.restrained() && in_range(src, usr)) - if(href_list["remove_inv"]) - if(!Adjacent(usr) || !(ishuman(usr) || isrobot(usr) || isalienadult(usr))) - return - var/remove_from = href_list["remove_inv"] - switch(remove_from) - if("collar") - if(!can_collar) - return - if(collar) - if(collar.flags & NODROP) - to_chat(usr, "\The [collar] is stuck too hard to [src] for you to remove!") - return - collar.dropped(src) - collar.forceMove(src.loc) - collar = null - regenerate_icons() - else - to_chat(usr, "There is nothing to remove from its [remove_from].") - return - show_inv(usr) - else if(href_list["add_inv"]) - if(!Adjacent(usr) || !(ishuman(usr) || isrobot(usr) || isalienadult(usr))) - return +/* Inventory */ - var/add_to = href_list["add_inv"] - switch(add_to) - if("collar") - if(!can_collar || collar) - return - var/obj/item/clothing/accessory/petcollar/C = usr.get_active_hand() - if(!istype(C)) - usr.visible_message("[usr] rubs [src]'s neck.","You rub [src]'s neck for a moment.") - return - usr.drop_item() - C.forceMove(src) - collar = C - collar.equipped(src) - regenerate_icons() - to_chat(usr, "You put \the [C] around \the [src]'s neck.") - if(C.tagname) - name = C.tagname - real_name = C.tagname - show_inv(usr) +/mob/living/simple_animal/show_inv(mob/user as mob) + if(!can_collar) + return + + user.set_machine(src) + var/dat = "
Collar:[(collar && !(collar.flags&ABSTRACT)) ? collar : "Empty"]
" + dat += "Close" + + var/datum/browser/popup = new(user, "mob\ref[src]", "[src]", 440, 250) + popup.set_content(dat) + popup.open() + +/mob/living/simple_animal/get_item_by_slot(slot_id) + switch(slot_id) + if(slot_collar) + return collar + . = ..() + +/mob/living/simple_animal/can_equip(obj/item/I, slot, disable_warning = 0) + // . = ..() // Do not call parent. We do not want animals using their hand slots. + switch(slot) + if(slot_collar) + if(collar) + return 0 + if(!can_collar) + return 0 + if(!istype(I, /obj/item/clothing/accessory/petcollar)) + return 0 + return 1 + +/mob/living/simple_animal/equip_to_slot(obj/item/W, slot) + if(!istype(W)) + return 0 + + if(!slot) + return 0 + + W.forceMove(src) + W.equipped(src, slot) + W.layer = 20 + W.plane = HUD_PLANE + + switch(slot) + if(slot_collar) + collar = W + if(collar.tagname) + name = collar.tagname + real_name = collar.tagname + regenerate_icons() + +/mob/living/simple_animal/unEquip(obj/item/I, force) + . = ..() + if(!. || !I) + return + + if(I == collar) + collar = null + regenerate_icons() /mob/living/simple_animal/get_access() . = ..() if(collar) . |= collar.GetAccess() +/* End Inventory */ + /mob/living/simple_animal/proc/sentience_act() //Called when a simple animal gains sentience via gold slime potion return