diff --git a/code/modules/mob/holder.dm b/code/modules/mob/holder.dm index 0f1fdcce1f9..6f73ed7db7d 100644 --- a/code/modules/mob/holder.dm +++ b/code/modules/mob/holder.dm @@ -24,7 +24,7 @@ mob_container.forceMove(get_turf(src)) M.reset_view() - del(src) + qdel(src) /obj/item/weapon/holder/attackby(obj/item/weapon/W as obj, mob/user as mob, params) for(var/mob/M in src.contents) @@ -34,6 +34,23 @@ for(var/mob/living/M in contents) M.show_message(message,m_type) +//Mob procs and vars for scooping up +/mob/living/var/holder_type + +/mob/living/proc/get_scooped(var/mob/living/carbon/grabber) + if(!holder_type) return + + var/obj/item/weapon/holder/H = new holder_type(loc) + src.forceMove(H) + H.name = name + if(desc) H.desc = desc + H.attack_hand(grabber) + + grabber << "You scoop up \the [src]." + src << "\The [grabber] scoops you up." + grabber.status_flags |= PASSEMOTES + return + //Mob specific holders. /obj/item/weapon/holder/diona @@ -53,5 +70,4 @@ /obj/item/weapon/holder/pai name = "pAI" desc = "It's a little robot." - icon_state = "pai" - icon_override = 'icons/mob/in-hand/paiheld.dmi' \ No newline at end of file + icon_state = "pai" \ No newline at end of file diff --git a/code/modules/mob/living/carbon/primitive/dionaold.dm b/code/modules/mob/living/carbon/primitive/dionaold.dm index 47f9ce3981f..a14fd3bdb50 100644 --- a/code/modules/mob/living/carbon/primitive/dionaold.dm +++ b/code/modules/mob/living/carbon/primitive/dionaold.dm @@ -13,6 +13,7 @@ var/ready_evolve = 0 ventcrawler = 1 var/environment_smash = 0 // This is a sloppy way to solve attack_animal runtimes. Stupid nymphs... + holder_type = /obj/item/weapon/holder/diona /mob/living/carbon/primitive/diona/New() @@ -30,16 +31,9 @@ src << "You feel your being twine with that of [M] as you merge with its biomass." src.verbs += /mob/living/carbon/primitive/diona/proc/split src.verbs -= /mob/living/carbon/primitive/diona/proc/merge - src.loc = M + src.forceMove(M) else - var/obj/item/weapon/holder/diona/D = new(loc) - src.loc = D - D.name = loc.name - D.attack_hand(M) - M << "You scoop up [src]." - src << "[M] scoops you up." - M.status_flags |= PASSEMOTES - return + get_scooped(M) ..() diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 2381692d53e..2ff24d2ba84 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -8,7 +8,7 @@ small = 1 pass_flags = 1 density = 0 - //var/holder_type = /obj/item/weapon/holder/pai + holder_type = /obj/item/weapon/holder/pai var/network = "SS13" var/obj/machinery/camera/current = null @@ -149,6 +149,17 @@ return 0 ..() +/mob/living/silicon/pai/MouseDrop(atom/over_object) + return +//Below was the orignal mousedrop code from Bay, keeping incase. +// var/mob/living/carbon/H = over_object +// if(!istype(H) || !Adjacent(H)) return ..() +// if(H.a_intent == "help") +// get_scooped(H) +// return +// else +// return ..() + /mob/living/silicon/pai/emp_act(severity) // Silence for 2 minutes // 20% chance to kill @@ -429,9 +440,13 @@ /mob/living/silicon/pai/attack_hand(mob/user as mob) if(stat == 2) return - visible_message("[user.name] boops [src] on the head.") - spawn(1) - close_up() + if(user.a_intent == "help" && src.loc != card) + get_scooped(user) + return + else + visible_message("[user.name] boops [src] on the head.") + spawn(1) + close_up() //I'm not sure how much of this is necessary, but I would rather avoid issues. /mob/living/silicon/pai/proc/close_up() @@ -520,22 +535,17 @@ // Handle being picked up. -/mob/living/silicon/pai/MouseDrop(atom/over_object) - var/mob/living/carbon/held = over_object - if(held.a_intent == "help") - var/obj/item/weapon/holder/pai/pie = new(loc) - src.loc = pie - pie.MouseDrop(held) - pie << "You scoop up [src]." - src << "[held] scoops you up." - //pie.status_flags |= PASSEMOTES - pie.icon_state = "pai-[icon_state]" - held.put_in_active_hand(pie) - held.update_icons() - src << "[held.get_active_hand()]" - //held.update_inv_r_hand() - pie.icon_override = 'icons/mob/paihat.dmi' - pie.item_state = "pai-[icon_state]" - return +/mob/living/silicon/pai/get_scooped(var/mob/living/carbon/grabber) + if(!holder_type) return + var/obj/item/weapon/holder/pai/H = new(loc) - ..() + //H.attack_hand(grabber) + src.forceMove(H) + H.icon_override = 'icons/mob/in-hand/paiheld.dmi' + H.icon_state = "pai-[icon_state]" + grabber.put_in_active_hand(H) + grabber.update_icons() + H.icon_override = 'icons/mob/paihat.dmi' + H.item_state = "pai-[icon_state]" + + return H \ No newline at end of file diff --git a/code/modules/mob/living/silicon/pai/software_modules.dm b/code/modules/mob/living/silicon/pai/software_modules.dm index f0d446a1103..71ef5649602 100644 --- a/code/modules/mob/living/silicon/pai/software_modules.dm +++ b/code/modules/mob/living/silicon/pai/software_modules.dm @@ -595,6 +595,7 @@ else data["holder"] = 0 + src << "You are not being carried by anyone!" ui = nanomanager.try_update_ui(user, user, id, ui,data , force_open) if(!ui) diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index 12c5548f51c..524268be43e 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -25,6 +25,8 @@ //Used for self-mailing. var/mail_destination = 0 + + holder_type = /obj/item/weapon/holder/drone // var/sprite[0] diff --git a/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm b/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm index 8ed8db27fcf..93a5b2c46f2 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm @@ -45,14 +45,7 @@ //Actual picking-up event. /mob/living/silicon/robot/drone/attack_hand(mob/living/carbon/human/M as mob) - if(M.a_intent == "help") - var/obj/item/weapon/holder/drone/D = new(loc) - src.loc = D - D.attack_hand(M) - M << "You scoop up [src]." - src << "[M] scoops you up." - M.status_flags |= PASSEMOTES - return + get_scooped(M) ..() \ No newline at end of file diff --git a/paradise.dme b/paradise.dme index bc86ded81f8..3722d31e809 100644 --- a/paradise.dme +++ b/paradise.dme @@ -5,85 +5,6 @@ // END_INTERNALS // BEGIN_FILE_DIR #define FILE_DIR . -#define FILE_DIR "code" -#define FILE_DIR "code/modules" -#define FILE_DIR "code/modules/jungle" -#define FILE_DIR "code/modules/shieldgen" -#define FILE_DIR "html" -#define FILE_DIR "html/images" -#define FILE_DIR "icons" -#define FILE_DIR "icons/48x48" -#define FILE_DIR "icons/ass" -#define FILE_DIR "icons/atmos" -#define FILE_DIR "icons/effects" -#define FILE_DIR "icons/effects/unused" -#define FILE_DIR "icons/mecha" -#define FILE_DIR "icons/misc" -#define FILE_DIR "icons/mob" -#define FILE_DIR "icons/mob/human_races" -#define FILE_DIR "icons/mob/human_races/cyberlimbs" -#define FILE_DIR "icons/mob/human_races/masks" -#define FILE_DIR "icons/mob/human_races/monkeys" -#define FILE_DIR "icons/mob/in-hand" -#define FILE_DIR "icons/mob/in-hand/left" -#define FILE_DIR "icons/mob/in-hand/right" -#define FILE_DIR "icons/mob/otherHuman" -#define FILE_DIR "icons/mob/species" -#define FILE_DIR "icons/mob/species/armalis" -#define FILE_DIR "icons/mob/species/skrell" -#define FILE_DIR "icons/mob/species/tajaran" -#define FILE_DIR "icons/mob/species/unathi" -#define FILE_DIR "icons/mob/species/vox" -#define FILE_DIR "icons/mob/spirits" -#define FILE_DIR "icons/NTOS" -#define FILE_DIR "icons/NTOS/battery_icons" -#define FILE_DIR "icons/obj" -#define FILE_DIR "icons/obj/assemblies" -#define FILE_DIR "icons/obj/atmospherics" -#define FILE_DIR "icons/obj/clothing" -#define FILE_DIR "icons/obj/clothing/species" -#define FILE_DIR "icons/obj/clothing/species/skrell" -#define FILE_DIR "icons/obj/clothing/species/tajaran" -#define FILE_DIR "icons/obj/clothing/species/unathi" -#define FILE_DIR "icons/obj/clothing/species/vox" -#define FILE_DIR "icons/obj/doors" -#define FILE_DIR "icons/obj/flora" -#define FILE_DIR "icons/obj/machines" -#define FILE_DIR "icons/obj/pipes" -#define FILE_DIR "icons/obj/power_cond" -#define FILE_DIR "icons/obj/tram" -#define FILE_DIR "icons/pda_icons" -#define FILE_DIR "icons/pods" -#define FILE_DIR "icons/spideros_icons" -#define FILE_DIR "icons/stamp_icons" -#define FILE_DIR "icons/Testing" -#define FILE_DIR "icons/turf" -#define FILE_DIR "icons/vehicles" -#define FILE_DIR "icons/vending_icons" -#define FILE_DIR "nano" -#define FILE_DIR "nano/images" -#define FILE_DIR "sound" -#define FILE_DIR "sound/AI" -#define FILE_DIR "sound/ambience" -#define FILE_DIR "sound/effects" -#define FILE_DIR "sound/effects/turret" -#define FILE_DIR "sound/effects/wind" -#define FILE_DIR "sound/guitar" -#define FILE_DIR "sound/hallucinations" -#define FILE_DIR "sound/items" -#define FILE_DIR "sound/machines" -#define FILE_DIR "sound/mecha" -#define FILE_DIR "sound/misc" -#define FILE_DIR "sound/music" -#define FILE_DIR "sound/piano" -#define FILE_DIR "sound/turntable" -#define FILE_DIR "sound/violin" -#define FILE_DIR "sound/voice" -#define FILE_DIR "sound/voice/complionator" -#define FILE_DIR "sound/voice/Serithi" -#define FILE_DIR "sound/vox" -#define FILE_DIR "sound/vox_fem" -#define FILE_DIR "sound/weapons" // END_FILE_DIR // BEGIN_PREFERENCES #define DEBUG