Cleaning up some holder/scoop/climbing code.

This commit is contained in:
Zuhayr
2015-12-29 14:56:39 +10:30
parent 40e169cc47
commit e3735bfbee
6 changed files with 24 additions and 27 deletions
+20 -10
View File
@@ -27,16 +27,20 @@ var/list/holder_mob_icon_cache = list()
..()
/obj/item/weapon/holder/process()
update_state()
/obj/item/weapon/holder/dropped()
..()
spawn(1)
update_state()
/obj/item/weapon/proc/update_state()
if(istype(loc,/turf) || !(contents.len))
for(var/mob/M in contents)
var/atom/movable/mob_container
mob_container = M
mob_container.forceMove(get_turf(src))
M.reset_view()
qdel(src)
/obj/item/weapon/holder/proc/sync(var/mob/living/M)
@@ -79,17 +83,23 @@ var/list/holder_mob_icon_cache = list()
//Mob procs and vars for scooping up
/mob/living/var/holder_type
/mob/living/proc/get_scooped(var/mob/living/carbon/grabber)
/mob/living/proc/get_scooped(var/mob/living/carbon/grabber, var/self_grab)
if(!holder_type || buckled || pinned.len)
return
var/obj/item/weapon/holder/H = new holder_type(loc)
src.loc = H
H.name = loc.name
H.attack_hand(grabber)
var/obj/item/weapon/holder/H = new holder_type(get_turf(src))
src.forceMove(H)
grabber.put_in_hands(H)
if(self_grab)
grabber << "<span class='notice'>\The [src] clambers onto you!</span>"
src << "<span class='notice'>You climb up onto \the [grabber]!</span>"
grabber.equip_to_slot_if_possible(H, slot_back, 0, 1)
else
grabber << "<span class='notice'>You scoop up \the [src]!</span>"
src << "<span class='notice'>\The [grabber] scoops you up!</span>"
grabber << "You scoop up [src]."
src << "[grabber] scoops you up."
grabber.status_flags |= PASSEMOTES
H.sync(src)
return H
@@ -1372,8 +1372,8 @@
/mob/living/carbon/human/MouseDrop(var/atom/over_object)
var/mob/living/carbon/human/H = over_object
if(holder_type && a_intent == "help" && istype(H) && H.a_intent == "help" && !issmall(H) && Adjacent(H))
get_scooped(H)
if(holder_type && istype(H) && !H.lying && !issmall(H) && Adjacent(H))
get_scooped(H, (usr == src))
return
return ..()
@@ -274,9 +274,6 @@
O.owner = H
/datum/species/proc/hug(var/mob/living/carbon/human/H,var/mob/living/target)
if (target.holder_type && target.a_intent == "help" && H.a_intent == "help")
target.get_scooped(H)
return
var/t_him = "them"
switch(target.gender)
+2 -2
View File
@@ -413,8 +413,8 @@
return 0
// Handle being picked up.
/mob/living/silicon/pai/get_scooped(var/mob/living/carbon/grabber)
var/obj/item/weapon/holder/H = ..()
/mob/living/silicon/pai/get_scooped(var/mob/living/carbon/grabber, var/self_drop)
var/obj/item/weapon/holder/H = ..(grabber, self_drop)
if(!istype(H))
return
H.icon_state = "pai-[icon_state]"
@@ -135,11 +135,6 @@
else
return ..()
/mob/living/simple_animal/cat/get_scooped(var/mob/living/carbon/grabber)
if (stat >= DEAD)
return //since the holder icon looks like a living cat
..()
//Basic friend AI
/mob/living/simple_animal/cat/fluff
var/mob/living/carbon/human/friend
@@ -89,11 +89,6 @@
else
return ..()
/mob/living/simple_animal/mouse/get_scooped(var/mob/living/carbon/grabber)
if (stat >= DEAD)
return
..()
/mob/living/simple_animal/mouse/start_pulling(var/atom/movable/AM)//Prevents mouse from pulling things
src << "<span class='warning'>You are too small to pull anything.</span>"
return