diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index f727326b3f1..0855fd73491 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -248,6 +248,37 @@ new /obj/item/weapon/grenade/chem_grenade/cleaner(src) new /obj/item/weapon/grenade/chem_grenade/cleaner(src) +/obj/item/weapon/storage/belt/lazarus + name = "trainer's belt" + desc = "For the pokemo- mining master, holds your lazarus capsules." + icon_state = "lazarusbelt" + item_state = "lazbelt" + w_class = 4 + max_w_class = 4 + max_combined_w_class = 28 + storage_slots = 6 + can_hold = list("/obj/item/device/mobcapsule") + +/obj/item/weapon/storage/belt/lazarus/New() + ..() + update_icon() + + +/obj/item/weapon/storage/belt/lazarus/update_icon() + ..() + icon_state = "[initial(icon_state)]_[contents.len]" + +/obj/item/weapon/storage/belt/lazarus/attackby(obj/item/W, mob/user) + var/amount = contents.len + . = ..() + if(amount != contents.len) + update_icon() + +/obj/item/weapon/storage/belt/lazarus/remove_from_storage(obj/item/W as obj, atom/new_location) + ..() + update_icon() + + /obj/item/weapon/storage/belt/bandolier name = "bandolier" desc = "A bandolier for holding shotgun ammunition." diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm index 1de1b266a47..d721310c140 100644 --- a/code/modules/mining/equipment_locker.dm +++ b/code/modules/mining/equipment_locker.dm @@ -332,6 +332,8 @@ new /datum/data/mining_equipment("Resonator", /obj/item/weapon/resonator, 800), new /datum/data/mining_equipment("Lazarus Injector", /obj/item/weapon/lazarus_injector, 1000), new /datum/data/mining_equipment("Silver Pickaxe", /obj/item/weapon/pickaxe/silver, 1000), + new /datum/data/mining_equipment("Lazarus Capsule", /obj/item/device/mobcapsule, 800), + new /datum/data/mining_equipment("Lazarus Capsule belt",/obj/item/weapon/storage/belt/lazarus, 200), new /datum/data/mining_equipment("Jetpack", /obj/item/weapon/tank/jetpack/carbondioxide/mining, 2000), new /datum/data/mining_equipment("Space Cash", /obj/item/weapon/spacecash/c1000, 2000), new /datum/data/mining_equipment("Diamond Pickaxe", /obj/item/weapon/pickaxe/diamond, 2000), diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 9c52dc7751f..d44b7d5a0da 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -192,3 +192,56 @@ icon_opened = "miningcaropen" icon_closed = "miningcar" +/*********************Mob Capsule*************************/ + +/obj/item/device/mobcapsule + name = "lazarus capsule" + desc = "It allows you to store and deploy lazarus-injected creatures easier." + icon = 'icons/obj/mobcap.dmi' + icon_state = "mobcap0" + w_class = 1.0 + throw_range = 20 + var/mob/living/captured = null + var/colorindex = 0 + +/obj/item/device/mobcapsule/attack(var/atom/A, mob/user, prox_flag) + if(!istype(A, /mob/living/simple_animal)) + return ..() + capture(A, user) + return 1 + +/obj/item/device/mobcapsule/proc/capture(var/mob/target, var/mob/U as mob) + var/mob/living/simple_animal/T = target + if(captured) + U << "Capture failed!: The capsule already has a mob registered to it!" + return + else + if(istype(T) && "neutral" in T.faction) + T.forceMove(src) + T.name = "[U.name]'s [initial(T.name)]" + T.cancel_camera() + name = "Lazarus Capsule: [initial(T.name)]" + U << "You placed a [T.name] inside the Lazarus Capsule!" + captured = T + else + U << "You can't capture that mob!" + +/obj/item/device/mobcapsule/throw_impact(atom/A, mob/user) + ..() + if(captured) + dump_contents(user) + +/obj/item/device/mobcapsule/proc/dump_contents(mob/user) + if(captured) + captured.loc = src.loc + if(captured.client) + captured.client.eye = captured.client.mob + captured.client.perspective = MOB_PERSPECTIVE + captured = null + +/obj/item/device/mobcapsule/attack_self(mob/user) + colorindex += 1 + if(colorindex >= 6) + colorindex = 0 + icon_state = "mobcap[colorindex]" + update_icon() \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 61a94e883c3..0738bb17e6a 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -414,7 +414,7 @@ else if(meat_type && (stat == DEAD)) //if the animal has a meat, and if it is dead. if(istype(O, /obj/item/weapon/kitchen/knife)) harvest() - else + else if(istype(O) && istype(user) && !O.attack(src, user)) user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) var/damage = 0 diff --git a/icons/mob/belt.dmi b/icons/mob/belt.dmi index 38b7f17c679..70aa813cbb8 100644 Binary files a/icons/mob/belt.dmi and b/icons/mob/belt.dmi differ diff --git a/icons/obj/clothing/belts.dmi b/icons/obj/clothing/belts.dmi index 85d9cffdbfc..7427f32fd3e 100644 Binary files a/icons/obj/clothing/belts.dmi and b/icons/obj/clothing/belts.dmi differ diff --git a/icons/obj/mobcap.dmi b/icons/obj/mobcap.dmi new file mode 100644 index 00000000000..829593a2849 Binary files /dev/null and b/icons/obj/mobcap.dmi differ