From 55087890de78ba3be4fdd9a1a2b7fc480b6e5c96 Mon Sep 17 00:00:00 2001 From: FalseIncarnate Date: Fri, 15 May 2015 03:52:36 -0400 Subject: [PATCH] Brooms, Stick-horses, and Flying Wizards! A port of https://github.com/d3athrow/vgstation13/pull/4377 ![image](http://i.gyazo.com/dd415093be904dc9e5d40570598eddb9.gif) Allows brooms to be wielded with 2-hands. Doing so places the broom between your legs so you look like you are riding it. You can also put a horsehead mask onto the broom to create a stick-horse to ride. This can also be wielded, but will ALWAYS appear between your legs. And for the more magically inclined, wielding a broom or stick-horse (2 hands!) will cause you to ride it like a witch, giving you the ability to bypass hazards such as tables and banana peels. --- _maps/map_files/cyberiad/z2.dmm | 8 +-- code/datums/supplypacks.dm | 2 +- code/game/machinery/vending.dm | 6 +- code/game/objects/effects/landmarks.dm | 10 ++-- .../game/objects/items/weapons/clown_items.dm | 4 ++ code/game/objects/items/weapons/staff.dm | 53 +++++++++++++++++- code/game/objects/structures/tables_racks.dm | 4 ++ code/game/turfs/simulated.dm | 2 + code/modules/admin/verbs/debug.dm | 6 +- code/modules/mining/surprises/tg.dm | 2 +- .../mob/living/carbon/human/human_movement.dm | 7 +++ code/modules/mob/living/carbon/human/life.dm | 8 +++ code/modules/mob/mob_defines.dm | 1 + icons/mob/in-hand/staff.dmi | Bin 1175 -> 2979 bytes icons/obj/wizard.dmi | Bin 9118 -> 9944 bytes 15 files changed, 93 insertions(+), 20 deletions(-) diff --git a/_maps/map_files/cyberiad/z2.dmm b/_maps/map_files/cyberiad/z2.dmm index b35a2e996e6..9871bb0fd1f 100644 --- a/_maps/map_files/cyberiad/z2.dmm +++ b/_maps/map_files/cyberiad/z2.dmm @@ -497,8 +497,8 @@ "jC" = (/obj/structure/stool/bed/chair{dir = 4},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "jD" = (/obj/structure/table/woodentable,/obj/machinery/recharger{pixel_y = 0},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "jE" = (/obj/structure/table/woodentable,/obj/item/weapon/dice/d20,/obj/item/weapon/dice,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"jF" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/marisa,/obj/item/clothing/shoes/sandal/marisa,/obj/item/clothing/head/wizard/marisa,/obj/item/weapon/staff/broom,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) -"jG" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/magusblue,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) +"jF" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/marisa,/obj/item/clothing/shoes/sandal/marisa,/obj/item/clothing/head/wizard/marisa,/obj/item/weapon/twohanded/staff/broom,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) +"jG" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/magusblue,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/gun/energy/staff,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) "jH" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership) "jI" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership) "jJ" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership) @@ -523,9 +523,9 @@ "kc" = (/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "kd" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/mugwort,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "ke" = (/obj/structure/table/woodentable,/obj/item/weapon/spacecash,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"kf" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/red,/obj/item/clothing/shoes/sandal,/obj/item/clothing/head/wizard/red,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) +"kf" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/red,/obj/item/clothing/shoes/sandal,/obj/item/clothing/head/wizard/red,/obj/item/weapon/gun/energy/staff,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) "kg" = (/obj/machinery/light/spot,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) -"kh" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/magusred,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) +"kh" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/magusred,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/gun/energy/staff,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) "ki" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership) "kj" = (/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/space,/area/syndicate_mothership/elite_squad) "kk" = (/turf/simulated/shuttle/wall{dir = 4; icon_state = "wall3"},/area/syndicate_mothership/elite_squad) diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 484f3e2af24..642cc7e78c1 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -1217,7 +1217,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /datum/supply_packs/misc/wizard name = "Wizard Costume Crate" - contains = list(/obj/item/weapon/staff, + contains = list(/obj/item/weapon/twohanded/staff, /obj/item/clothing/suit/wizrobe/fake, /obj/item/clothing/shoes/sandal, /obj/item/clothing/head/wizard/fake) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index e6bf09f19af..21a97405262 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -1017,7 +1017,7 @@ vend_delay = 15 vend_reply = "Have an enchanted evening!" product_ads = "FJKLFJSD;AJKFLBJAKL;1234 LOONIES LOL!;>MFW;Kill them fuckers!;GET DAT FUKKEN DISK;HONK!;EI NATH;Destroy the station!;Admin conspiracies since forever!;Space-time bending hardware!" - products = list(/obj/item/clothing/head/wizard = 1,/obj/item/clothing/suit/wizrobe = 1,/obj/item/clothing/head/wizard/red = 1,/obj/item/clothing/suit/wizrobe/red = 1,/obj/item/clothing/shoes/sandal = 1,/obj/item/weapon/staff = 2) + products = list(/obj/item/clothing/head/wizard = 1,/obj/item/clothing/suit/wizrobe = 1,/obj/item/clothing/head/wizard/red = 1,/obj/item/clothing/suit/wizrobe/red = 1,/obj/item/clothing/shoes/sandal = 1,/obj/item/weapon/twohanded/staff = 2) /obj/machinery/vending/autodrobe name = "\improper AutoDrobe" @@ -1038,8 +1038,8 @@ /obj/item/clothing/under/pirate = 1,/obj/item/clothing/suit/pirate_brown = 1,/obj/item/clothing/suit/pirate_black =1,/obj/item/clothing/under/pirate_rags =1,/obj/item/clothing/head/pirate = 1,/obj/item/clothing/head/bandana = 1, /obj/item/clothing/head/bandana = 1,/obj/item/clothing/under/soviet = 1,/obj/item/clothing/head/ushanka = 1,/obj/item/clothing/suit/imperium_monk = 1, /obj/item/clothing/mask/gas/cyborg = 1,/obj/item/clothing/suit/holidaypriest = 1,/obj/item/clothing/head/wizard/marisa/fake = 1, - /obj/item/clothing/suit/wizrobe/marisa/fake = 1,/obj/item/clothing/under/sundress = 1,/obj/item/clothing/head/witchwig = 1,/obj/item/weapon/staff/broom = 1, - /obj/item/clothing/suit/wizrobe/fake = 1,/obj/item/clothing/head/wizard/fake = 1,/obj/item/weapon/staff = 3,/obj/item/clothing/mask/gas/sexyclown = 1, + /obj/item/clothing/suit/wizrobe/marisa/fake = 1,/obj/item/clothing/under/sundress = 1,/obj/item/clothing/head/witchwig = 1,/obj/item/weapon/twohanded/staff/broom = 1, + /obj/item/clothing/suit/wizrobe/fake = 1,/obj/item/clothing/head/wizard/fake = 1,/obj/item/weapon/twohanded/staff = 3,/obj/item/clothing/mask/gas/sexyclown = 1, /obj/item/clothing/under/sexyclown = 1,/obj/item/clothing/mask/gas/sexymime = 1,/obj/item/clothing/under/sexymime = 1,/obj/item/clothing/suit/apron/overalls = 1, /obj/item/clothing/head/rabbitears =1, /obj/item/clothing/head/sombrero = 1, /obj/item/clothing/suit/poncho = 1, /obj/item/clothing/suit/poncho/green = 1, /obj/item/clothing/suit/poncho/red = 1, /obj/item/clothing/accessory/blue = 1, /obj/item/clothing/accessory/red = 1, /obj/item/clothing/accessory/black = 1, /obj/item/clothing/accessory/horrible = 1, diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index 2e00c5d99d8..5b13f3258dc 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -39,7 +39,7 @@ if("JoinLate") latejoin += loc del(src) - + if("JoinLateGateway") latejoin_gateway += loc del(src) @@ -47,7 +47,7 @@ if("JoinLateCryo") latejoin_cryo += loc del(src) - + if("JoinLateCyborg") latejoin_cyborg += loc del(src) @@ -90,7 +90,7 @@ if("carpspawn") carplist += loc - + if("voxstart") raider_spawn += loc @@ -252,13 +252,13 @@ /obj/effect/landmark/costume/cutewitch/New() new /obj/item/clothing/under/sundress(src.loc) new /obj/item/clothing/head/witchwig(src.loc) - new /obj/item/weapon/staff/broom(src.loc) + new /obj/item/weapon/twohanded/staff/broom(src.loc) del(src) /obj/effect/landmark/costume/fakewizard/New() new /obj/item/clothing/suit/wizrobe/fake(src.loc) new /obj/item/clothing/head/wizard/fake(src.loc) - new /obj/item/weapon/staff/(src.loc) + new /obj/item/weapon/twohanded/staff/(src.loc) del(src) /obj/effect/landmark/costume/sexyclown/New() diff --git a/code/game/objects/items/weapons/clown_items.dm b/code/game/objects/items/weapons/clown_items.dm index 84dc2d0c8b7..b68c2c974b0 100644 --- a/code/game/objects/items/weapons/clown_items.dm +++ b/code/game/objects/items/weapons/clown_items.dm @@ -27,6 +27,8 @@ return if(istype(M, /mob/living/carbon/human) && M:species.bodyflags & FEET_NOSLIP) return + if(M.flying) + return M.stop_pulling() M << "\blue You slipped on the [name]!" @@ -42,6 +44,8 @@ var/mob/M = AM if (istype(M, /mob/living/carbon/human) && (isobj(M:shoes) && M:shoes.flags&NOSLIP) || M.buckled) return + if(M.flying) + return M.stop_pulling() M << "\blue You slipped on the [name]!" diff --git a/code/game/objects/items/weapons/staff.dm b/code/game/objects/items/weapons/staff.dm index a97ae394244..021c3a7618f 100644 --- a/code/game/objects/items/weapons/staff.dm +++ b/code/game/objects/items/weapons/staff.dm @@ -1,4 +1,4 @@ -/obj/item/weapon/staff +/obj/item/weapon/twohanded/staff name = "wizards staff" desc = "Apparently a staff used by the wizard." icon = 'icons/obj/wizard.dmi' @@ -11,13 +11,60 @@ flags = NOSHIELD attack_verb = list("bludgeoned", "whacked", "disciplined") -/obj/item/weapon/staff/broom +/obj/item/weapon/twohanded/staff/broom name = "broom" desc = "Used for sweeping, and flying into the night while cackling. Black cat not included." icon = 'icons/obj/wizard.dmi' icon_state = "broom" + item_state = "broom0" + icon_override = 'icons/mob/in-hand/staff.dmi' -/obj/item/weapon/staff/stick +/obj/item/weapon/twohanded/staff/broom/attack_self(mob/user as mob) + ..() + item_state = "broom[wielded ? 1 : 0]" + force = wielded ? 5 : 3 + attack_verb = wielded ? list("rammed into", "charged at") : list("bludgeoned", "whacked", "cleaned") + if(user) + user.update_inv_l_hand() + user.update_inv_r_hand() + if(user.mind in ticker.mode.wizards) + user.flying = wielded ? 1 : 0 + if(wielded) + user << "You hold \the [src] between your legs." + user.say("QUID 'ITCH") + animate(user, pixel_y = pixel_y + 10 , time = 10, loop = 1, easing = SINE_EASING) + else + animate(user, pixel_y = pixel_y + 10 , time = 1, loop = 1) + animate(user, pixel_y = pixel_y, time = 10, loop = 1, easing = SINE_EASING) + animate(user) + if(user.lying)//aka. if they have just been stunned + user.pixel_y -= 6 + else + if(wielded) + user << "You hold \the [src] between your legs." + +/obj/item/weapon/twohanded/staff/broom/attackby(var/obj/O, mob/user) + if(istype(O, /obj/item/clothing/mask/horsehead)) + new/obj/item/weapon/twohanded/staff/broom/horsebroom(get_turf(src)) + user.unEquip(O) + qdel(O) + qdel(src) + return + ..() + +/obj/item/weapon/twohanded/staff/broom/horsebroom + name = "broomstick horse" + desc = "Saddle up!" + icon = 'icons/obj/wizard.dmi' + icon_state = "horsebroom" + item_state = "horsebroom0" + icon_override = 'icons/mob/in-hand/staff.dmi' + +/obj/item/weapon/twohanded/staff/broom/horsebroom/attack_self(mob/user as mob) + ..() + item_state = "horsebroom[wielded ? 1 : 0]" + +/obj/item/weapon/twohanded/staff/stick name = "stick" desc = "A great tool to drag someone else's drinks across the bar." icon = 'icons/obj/weapons.dmi' diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 9d50bbd9c4e..523aa5a8e7a 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -334,6 +334,10 @@ if(air_group || (height==0)) return 1 if(istype(mover,/obj/item/projectile)) return (check_cover(mover,target)) + if(ismob(mover)) + var/mob/M = mover + if(M.flying) + return 1 if(istype(mover) && mover.checkpass(PASSTABLE)) return 1 if(locate(/obj/structure/table) in get_turf(mover)) diff --git a/code/game/turfs/simulated.dm b/code/game/turfs/simulated.dm index a09ee1d40c2..d7ec46b7416 100644 --- a/code/game/turfs/simulated.dm +++ b/code/game/turfs/simulated.dm @@ -78,6 +78,8 @@ else playsound(src, "jackboot", 20, 1) + if(M.flying) + return ..() // Tracking blood var/list/bloodDNA = null diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 76240d2f627..4f8b13a36e2 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -1037,7 +1037,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard(M), slot_head) M.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(M), slot_r_store) M.equip_to_slot_or_del(new /obj/item/weapon/spellbook(M), slot_r_hand) - M.equip_to_slot_or_del(new /obj/item/weapon/staff(M), slot_l_hand) + M.equip_to_slot_or_del(new /obj/item/weapon/twohanded/staff(M), slot_l_hand) M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back) M.equip_to_slot_or_del(new /obj/item/weapon/storage/box(M), slot_in_backpack) @@ -1049,7 +1049,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/red(M), slot_head) M.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(M), slot_r_store) M.equip_to_slot_or_del(new /obj/item/weapon/spellbook(M), slot_r_hand) - M.equip_to_slot_or_del(new /obj/item/weapon/staff(M), slot_l_hand) + M.equip_to_slot_or_del(new /obj/item/weapon/twohanded/staff(M), slot_l_hand) M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back) M.equip_to_slot_or_del(new /obj/item/weapon/storage/box(M), slot_in_backpack) @@ -1061,7 +1061,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/marisa(M), slot_head) M.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(M), slot_r_store) M.equip_to_slot_or_del(new /obj/item/weapon/spellbook(M), slot_r_hand) - M.equip_to_slot_or_del(new /obj/item/weapon/staff(M), slot_l_hand) + M.equip_to_slot_or_del(new /obj/item/weapon/twohanded/staff(M), slot_l_hand) M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back) M.equip_to_slot_or_del(new /obj/item/weapon/storage/box(M), slot_in_backpack) diff --git a/code/modules/mining/surprises/tg.dm b/code/modules/mining/surprises/tg.dm index 0fc8eb9dd65..7926e957240 100644 --- a/code/modules/mining/surprises/tg.dm +++ b/code/modules/mining/surprises/tg.dm @@ -82,7 +82,7 @@ /obj/item/weapon/storage/belt/soulstone=1, /obj/item/trash/candle=3, /obj/item/weapon/dice=3, - /obj/item/weapon/staff=2, + /obj/item/weapon/twohanded/staff=2, /obj/effect/decal/cleanable/dirt=3, ) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index b7f1bea99a8..aeb0cd160c1 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -10,6 +10,8 @@ if (istype(loc, /turf/space)) return -1 // It's hard to be slowed down in space by... anything + if(flying) return -1 + if(embedded_flag) handle_embedded_objects() //Moving with objects stuck in you can cause bad times. @@ -77,6 +79,11 @@ //Can we act if(restrained()) return 0 + //Are we flying? + if(flying) + inertia_dir = 0 + return 1 + //Do we have a working jetpack if(istype(back, /obj/item/weapon/tank/jetpack)) var/obj/item/weapon/tank/jetpack/J = back diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index e51a4e3c357..1e1eba4214e 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1034,6 +1034,14 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc if(jitteriness) do_jitter_animation(jitteriness) + //Flying + if(flying) + spawn() + animate(src, pixel_y = pixel_y + 5 , time = 10, loop = 1, easing = SINE_EASING) + spawn(10) + if(flying) + animate(src, pixel_y = pixel_y - 5, time = 10, loop = 1, easing = SINE_EASING) + //Other handle_statuses() diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 6c8d2762690..583075472e0 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -102,6 +102,7 @@ var/drowsyness = 0.0//Carbon var/dizziness = 0//Carbon var/jitteriness = 0//Carbon + var/flying = 0 var/charges = 0.0 var/nutrition = 400.0//Carbon diff --git a/icons/mob/in-hand/staff.dmi b/icons/mob/in-hand/staff.dmi index 3a8f1ebee4fa3cd29adcfcbb9906a48170397924..6d59d81ecfbef4f434a8406695a1ab184fb42e20 100644 GIT binary patch literal 2979 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 literal 1175 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 YAa~s3^2w}(%hzx8v