diff --git a/code/WorkInProgress/Sayu/belt.dm b/code/WorkInProgress/Sayu/belt.dm new file mode 100644 index 00000000000..1405640b2bb --- /dev/null +++ b/code/WorkInProgress/Sayu/belt.dm @@ -0,0 +1,164 @@ +// ------------------------------------- +// Bluespace Belt +// ------------------------------------- + + +/obj/item/weapon/storage/belt/bluespace + name = "Belt of Holding" + desc = "The greatest in pants-supporting technology." + icon_state = "medicalbelt" + item_state = "medical" + storage_slots = 14 + w_class = 4 + max_w_class = 2 + max_combined_w_class = 21 // = 14 * 1.5, not 14 * 2. This is deliberate + origin_tech = "bluespace=4" + can_hold = list() + New() + if(prob(5)) + //Sometimes people choose justice. + //Sometimes justice chooses you. + visible_message("That doesn't look like a normal Toolbelt of Holding...") + new /obj/item/weapon/storage/belt/bluespace/owlman(loc) + spawn(1) + del src + return + ..() + + proc/failcheck(mob/user as mob) + if (prob(src.reliability)) return 1 //No failure + if (prob(src.reliability)) + user << "\red The Bluespace portal resists your attempt to add another item." //light failure + else + user << "\red The Bluespace generator malfunctions!" + for (var/obj/O in src.contents) //it broke, delete what was in it + del(O) + crit_fail = 1 + return 0 + +/obj/item/weapon/storage/belt/bluespace/owlman + name = "Owlman's utility belt" + desc = "Sometimes people choose justice. Sometimes, justice chooses you..." + icon_state = "securitybelt" + item_state = "security" + storage_slots = 14 + max_w_class = 3 + max_combined_w_class = 28 // = 14 * 2 + origin_tech = "bluespace=4;syndicate=2" + allow_quick_empty = 1 + can_hold = list() + New() + ..() + new /obj/item/clothing/mask/gas/owl_mask(src) + new /obj/item/clothing/under/owl(src) + new /obj/item/weapon/grenade/smokebomb(src) + new /obj/item/weapon/grenade/smokebomb(src) + new /obj/item/device/detective_scanner(src) + + + + // As a last resort, the belt can be used as a plastic explosive with a fixed timer (15 seconds). Naturally, you'll lose all your gear... + // Of course, it could be worse. It could spawn a singularity! +/obj/item/weapon/storage/belt/bluespace/owlman/afterattack(atom/target as obj|turf, mob/user as mob, flag) + if (!flag) + return + if (istype(target, /turf/unsimulated) || istype(target, /turf/simulated/shuttle) || istype(target, /obj/item/weapon/storage) || istype(target, /obj/structure/table) || istype(target, /obj/structure/closet)) + return + user << "Planting explosives..." + user.visible_message("[user.name] is fiddling with their toolbelt.") + if(ismob(target)) + user.attack_log += "\[[time_stamp()]\] [user.real_name] tried planting [name] on [target:real_name] ([target:ckey])" + log_attack(" [user.real_name] ([user.ckey]) tried planting [name] on [target:real_name] ([target:ckey])") + user.visible_message("\red [user.name] is trying to strap a belt to [target.name]!") + + + if(do_after(user, 50) && in_range(user, target)) + user.drop_item() + target = target + loc = null + var/location + if (isturf(target)) location = target + if (ismob(target)) + target:attack_log += "\[[time_stamp()]\] Had the [name] planted on them by [user.real_name] ([user.ckey])" + user.visible_message("\red [user.name] finished planting an explosive on [target.name]!") + target.overlays += image('icons/obj/assemblies.dmi', "plastic-explosive2") + user << "You sacrifice your belt for the sake of justice. Timer counting down from 15." + spawn(150) + if(target) + if(ismob(target) || isobj(target)) + location = target.loc // These things can move + explosion(location, -1, -1, 2, 3) + if (istype(target, /turf/simulated/wall)) target:dismantle_wall(1) + else target.ex_act(1) + if (isobj(target)) + if (target) + del(target) + if (src) + del(src) +/obj/item/weapon/storage/belt/bluespace/attack(mob/M as mob, mob/user as mob, def_zone) + return + +/obj/item/weapon/storage/belt/bluespace/admin + name = "Admin's Tool-belt" + desc = "Holds everything for those that run everything." + icon_state = "soulstonebelt" + item_state = "soulstonebelt" + w_class = 10 // permit holding other storage items + storage_slots = 28 + max_w_class = 10 + max_combined_w_class = 280 + can_hold = list() + + New() + ..() + new /obj/item/weapon/crowbar(src) + new /obj/item/weapon/screwdriver(src) + new /obj/item/weapon/weldingtool/hugetank(src) + new /obj/item/weapon/wirecutters(src) + new /obj/item/weapon/wrench(src) + new /obj/item/device/multitool(src) + new /obj/item/weapon/cable_coil(src) + + new /obj/item/weapon/handcuffs(src) + new /obj/item/weapon/dnainjector/xraymut(src) + new /obj/item/weapon/dnainjector/firemut(src) + new /obj/item/weapon/dnainjector/telemut(src) + new /obj/item/weapon/dnainjector/hulkmut(src) +// new /obj/item/weapon/spellbook(src) // for smoke effects, door openings, etc +// new /obj/item/weapon/magic/spellbook(src) + +// new/obj/item/weapon/reagent_containers/hypospray/admin(src) + +/obj/item/weapon/storage/belt/bluespace/sandbox + name = "Sandbox Mode Toolbelt" + desc = "Holds whatever, you can spawn your own damn stuff." + w_class = 10 // permit holding other storage items + storage_slots = 28 + max_w_class = 10 + max_combined_w_class = 280 + can_hold = list() + + New() + ..() + new /obj/item/weapon/crowbar(src) + new /obj/item/weapon/screwdriver(src) + new /obj/item/weapon/weldingtool/hugetank(src) + new /obj/item/weapon/wirecutters(src) + new /obj/item/weapon/wrench(src) + new /obj/item/device/multitool(src) + new /obj/item/weapon/cable_coil(src) + + new /obj/item/device/analyzer(src) + new /obj/item/device/healthanalyzer(src) + + +//Research for the Bluespace Belt +datum/design/bluespace_belt + name = "Experimental Bluespace Belt" + desc = "An astonishingly complex belt popularized by a rich blue-space technology magnate." + id = "bluespace_belt" + req_tech = list("bluespace" = 4, "materials" = 6) + build_type = PROTOLATHE + materials = list("$gold" = 1500, "$diamond" = 3000, "$uranium" = 1000) + reliability_base = 80 + build_path = "/obj/item/weapon/storage/belt/bluespace" \ No newline at end of file