Merge pull request #1061 from FalseIncarnate/wizard

Brooms, Stick-horses, and Flying Wizards!
This commit is contained in:
ZomgPonies
2015-05-16 07:34:22 -04:00
18 changed files with 145 additions and 22 deletions
+35 -1
View File
@@ -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)
@@ -1312,3 +1312,37 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
/obj/item/weapon/lipstick/random)
cost = 30 //Lots of very expensive items. You gotta pay up to look good!
containername = "formal-wear crate"
/datum/supply_packs/misc/teamcolors //For team sports like space polo
name = "Team Jerseys Crate"
// 4 red jerseys, 4 blue jerseys, and 1 beach ball
contains = list(/obj/item/clothing/under/color/red/jersey,
/obj/item/clothing/under/color/red/jersey,
/obj/item/clothing/under/color/red/jersey,
/obj/item/clothing/under/color/red/jersey,
/obj/item/clothing/under/color/blue/jersey,
/obj/item/clothing/under/color/blue/jersey,
/obj/item/clothing/under/color/blue/jersey,
/obj/item/clothing/under/color/blue/jersey,
/obj/item/weapon/beach_ball)
cost = 15
containername = "team jerseys crate"
/datum/supply_packs/misc/polo //For space polo! Or horsehead Quiditch
name = "Polo Supply Crate"
// 6 brooms, 6 horse masks for the brooms, and 1 beach ball
contains = list(/obj/item/weapon/twohanded/staff/broom,
/obj/item/weapon/twohanded/staff/broom,
/obj/item/weapon/twohanded/staff/broom,
/obj/item/weapon/twohanded/staff/broom,
/obj/item/weapon/twohanded/staff/broom,
/obj/item/weapon/twohanded/staff/broom,
/obj/item/clothing/mask/horsehead,
/obj/item/clothing/mask/horsehead,
/obj/item/clothing/mask/horsehead,
/obj/item/clothing/mask/horsehead,
/obj/item/clothing/mask/horsehead,
/obj/item/clothing/mask/horsehead,
/obj/item/weapon/beach_ball)
cost = 20
containername = "polo supply crate"
+4 -4
View File
@@ -1015,7 +1015,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"
@@ -1036,13 +1036,13 @@
/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,
/obj/item/clothing/under/maid = 1, /obj/item/clothing/under/janimaid = 1, /obj/item/clothing/under/pants/camo = 1, /obj/item/clothing/mask/bandana = 1, /obj/item/clothing/mask/bandana/black = 1)
contraband = list(/obj/item/clothing/suit/judgerobe = 1,/obj/item/clothing/head/powdered_wig = 1,/obj/item/weapon/gun/magic/wand = 1, /obj/item/clothing/mask/balaclava=1)
contraband = list(/obj/item/clothing/suit/judgerobe = 1,/obj/item/clothing/head/powdered_wig = 1,/obj/item/weapon/gun/magic/wand = 1, /obj/item/clothing/mask/balaclava=1, /obj/item/clothing/mask/horsehead = 2)
premium = list(/obj/item/clothing/suit/hgpirate = 1, /obj/item/clothing/head/hgpiratecap = 1, /obj/item/clothing/head/helmet/roman = 1, /obj/item/clothing/head/helmet/roman/legionaire = 1, /obj/item/clothing/under/roman = 1, /obj/item/clothing/shoes/roman = 1)
refill_canister = /obj/item/weapon/vending_refill/autodrobe
+5 -5
View File
@@ -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()
@@ -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]!"
+50 -3
View File
@@ -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 << "<span class='notice'>You hold \the [src] between your legs.</span>"
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 << "<span class='notice'>You hold \the [src] between your legs.</span>"
/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'
@@ -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))
+2
View File
@@ -78,6 +78,8 @@
else
playsound(src, "jackboot", 20, 1)
if(M.flying)
return ..()
// Tracking blood
var/list/bloodDNA = null
+3 -3
View File
@@ -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)
+17 -1
View File
@@ -3,7 +3,7 @@
/obj/item/clothing/under/color/random/New()
..()
var/list/excluded = list(/obj/item/clothing/under/color/random, /obj/item/clothing/under/color, /obj/item/clothing/under/color/blackf, /obj/item/clothing/under/color/blue/dodgeball, /obj/item/clothing/under/color/orange/prison, /obj/item/clothing/under/color/red/dodgeball)
var/list/excluded = list(/obj/item/clothing/under/color/random, /obj/item/clothing/under/color, /obj/item/clothing/under/color/blackf, /obj/item/clothing/under/color/blue/dodgeball, /obj/item/clothing/under/color/orange/prison, /obj/item/clothing/under/color/red/dodgeball, /obj/item/clothing/under/color/red/jersey, /obj/item/clothing/under/color/blue/jersey)
var/obj/item/clothing/under/color/C = pick(typesof(/obj/item/clothing/under/color) - excluded)
name = initial(C.name)
icon_state = initial(C.icon_state)
@@ -173,3 +173,19 @@
icon_state = "darkred"
_color = "darkred"
flags = ONESIZEFITSALL
/obj/item/clothing/under/color/red/jersey
name = "red team jersey"
desc = "The jersey of the Nanotrasen Phi-ghters!"
icon_state = "redjersey"
item_state = "r_suit"
_color = "redjersey"
flags = ONESIZEFITSALL
/obj/item/clothing/under/color/blue/jersey
name = "blue team jersey"
desc = "The jersey of the Nanotrasen Pi-rates!"
icon_state = "bluejersey"
item_state = "b_suit"
_color = "bluejersey"
flags = ONESIZEFITSALL
+1 -1
View File
@@ -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,
)
@@ -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
@@ -1043,6 +1043,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()
+1
View File
@@ -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