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 3a8f1ebee4f..6d59d81ecfb 100644 Binary files a/icons/mob/in-hand/staff.dmi and b/icons/mob/in-hand/staff.dmi differ diff --git a/icons/obj/wizard.dmi b/icons/obj/wizard.dmi index b659bdc23ec..52bbd89fe86 100644 Binary files a/icons/obj/wizard.dmi and b/icons/obj/wizard.dmi differ