/obj/item/gun/magic/wand name = "wand of nothing" desc = "It's not just a stick, it's a MAGIC stick!" ammo_type = /obj/item/ammo_casing/magic lefthand_file = 'icons/mob/inhands/weapons_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons_righthand.dmi' icon_state = "nothingwand" item_state = "wand" belt_icon = "wand_nothing" w_class = WEIGHT_CLASS_SMALL can_charge = FALSE max_charges = 100 //100, 50, 50, 34 (max charge distribution by 25%ths) var/variable_charges = TRUE execution_speed = 3 SECONDS /obj/item/gun/magic/wand/Initialize(mapload) . = ..() if(prob(75) && variable_charges) //25% chance of listed max charges, 50% chance of 1/2 max charges, 25% chance of 1/3 max charges if(prob(33)) max_charges = CEILING(max_charges / 3, 1) charges = max_charges else max_charges = CEILING(max_charges / 2, 1) charges = max_charges /obj/item/gun/magic/wand/examine(mob/user) . = ..() . += "Has [charges] charge\s remaining." /obj/item/gun/magic/wand/update_icon_state() icon_state = "[initial(icon_state)][charges ? "" : "-drained"]" /obj/item/gun/magic/wand/attack(atom/target, mob/living/user) if(target == user) return ..() /obj/item/gun/magic/wand/afterattack(atom/target, mob/living/user) if(!charges) shoot_with_empty_chamber(user) return if(target == user) if(no_den_usage) var/area/A = get_area(user) if(istype(A, /area/wizard_station)) to_chat(user, "You know better than to violate the security of The Den, best wait until you leave to use [src].") return else no_den_usage = FALSE zap_self(user) else ..() update_icon() /obj/item/gun/magic/wand/proc/zap_self(mob/living/user) user.visible_message("[user] zaps [user.p_themselves()] with [src].") playsound(user, fire_sound, 50, 1) user.create_attack_log("[key_name(user)] zapped [user.p_themselves()] with a [src]") add_attack_logs(user, user, "zapped [user.p_themselves()] with a [src]", ATKLOG_ALL) ///////////////////////////////////// //WAND OF DEATH ///////////////////////////////////// /obj/item/gun/magic/wand/death name = "wand of death" desc = "This deadly wand overwhelms the victim's body with pure energy, slaying them without fail." fire_sound = 'sound/magic/wandodeath.ogg' ammo_type = /obj/item/ammo_casing/magic/death icon_state = "deathwand" belt_icon = "wand_death" max_charges = 3 //3, 2, 2, 1 /obj/item/gun/magic/wand/death/zap_self(mob/living/user) ..() charges-- if(isliving(user)) if(user.mob_biotypes & MOB_UNDEAD) //negative energy heals the undead user.revive() to_chat(user, "You feel great!") return to_chat(user, "You irradiate yourself with pure negative energy! [pick("Do not pass go. Do not collect 200 zorkmids.", "You feel more confident in your spell casting skills.", "You Die...", "Do you want your possessions identified?")]") if(ismachineperson(user)) //speshul snowfleks deserv speshul treetment user.adjustFireLoss(6969) user.death(FALSE) ///////////////////////////////////// //WAND OF HEALING ///////////////////////////////////// /obj/item/gun/magic/wand/resurrection name = "wand of resurrection" desc = "This wand uses healing magics to heal and revive. They are rarely utilized within the Wizard Federation for some reason." ammo_type = /obj/item/ammo_casing/magic/heal fire_sound = 'sound/magic/staff_healing.ogg' icon_state = "revivewand" belt_icon = "wand_revive" max_charges = 3 //3, 2, 2, 1 /obj/item/gun/magic/wand/resurrection/zap_self(mob/living/user) ..() charges-- if(isliving(user)) if(user.mob_biotypes & MOB_UNDEAD) //positive energy harms the undead to_chat(user, "You irradiate yourself with pure positive energy! [pick("Do not pass go. Do not collect 200 zorkmids.", "You feel more confident in your spell casting skills.", "You Die...", "Do you want your possessions identified?")]") user.death(FALSE) return user.revive() to_chat(user, "You feel great!") ///////////////////////////////////// //WAND OF POLYMORPH ///////////////////////////////////// /obj/item/gun/magic/wand/polymorph name = "wand of polymorph" desc = "This wand is attuned to chaos and will radically alter the victim's form." ammo_type = /obj/item/ammo_casing/magic/change fire_sound = 'sound/magic/staff_change.ogg' icon_state = "polywand" belt_icon = "wand_polymorph" max_charges = 10 //10, 5, 5, 4 /obj/item/gun/magic/wand/polymorph/zap_self(mob/living/user) ..() //because the user mob ceases to exists by the time wabbajack fully resolves wabbajack(user) charges-- ///////////////////////////////////// //WAND OF TELEPORTATION ///////////////////////////////////// /obj/item/gun/magic/wand/teleport name = "wand of teleportation" desc = "This wand will wrench targets through space and time to move them somewhere else." ammo_type = /obj/item/ammo_casing/magic/teleport icon_state = "telewand" belt_icon = "wand_tele" max_charges = 10 //10, 5, 5, 4 no_den_usage = TRUE fire_sound = 'sound/magic/wand_teleport.ogg' /obj/item/gun/magic/wand/teleport/zap_self(mob/living/user) do_teleport(user, user, 10) var/datum/effect_system/smoke_spread/smoke = new smoke.set_up(10, FALSE, user) smoke.start() charges-- ..() ///////////////////////////////////// //WAND OF DOOR CREATION ///////////////////////////////////// /obj/item/gun/magic/wand/door name = "wand of door creation" desc = "This particular wand can create doors in any wall for the unscrupulous wizard who shuns teleportation magics." ammo_type = /obj/item/ammo_casing/magic/door fire_sound = 'sound/magic/staff_door.ogg' icon_state = "doorwand" belt_icon = "wand_door" max_charges = 20 //20, 10, 10, 7 no_den_usage = TRUE /obj/item/gun/magic/wand/door/zap_self(mob/living/user) to_chat(user, "You feel vaguely more open with your feelings.") charges-- ..() ///////////////////////////////////// //WAND OF FIREBALL ///////////////////////////////////// /obj/item/gun/magic/wand/fireball name = "wand of fireball" desc = "This wand shoots scorching balls of fire that explode into destructive flames." fire_sound = 'sound/magic/fireball.ogg' ammo_type = /obj/item/ammo_casing/magic/fireball icon_state = "firewand" belt_icon = "wand_fireball" max_charges = 8 //8, 4, 4, 3 /obj/item/gun/magic/wand/fireball/zap_self(mob/living/user) explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2) charges-- ..() ///////////////////////////////////// //WAND OF SLIPPING ///////////////////////////////////// /obj/item/gun/magic/wand/slipping name = "wand of slipping" desc = "This wand shoots... banana peels?" fire_sound = 'sound/items/bikehorn.ogg' ammo_type = /obj/item/ammo_casing/magic/slipping icon_state = "wandofslipping" max_charges = 5 //5, 4, 3, 2 /obj/item/gun/magic/wand/slipping/zap_self(mob/living/user) to_chat(user, "You feel rather silly!.") charges-- ..() ///////////////////////////////////// //WAND OF CHAOS - Only spawned by the Staff of Chaos as a rare random effect ///////////////////////////////////// /obj/item/gun/magic/wand/chaos name = "wand of chaos" desc = "Payback time!" fire_sound = 'sound/magic/staff_chaos.ogg' ammo_type = /obj/item/ammo_casing/magic/chaos icon_state = "chaoswand" max_charges = 20 variable_charges = FALSE no_den_usage = TRUE /obj/item/gun/magic/wand/chaos/zap_self(mob/living/user) if(!ishuman(user)) return to_chat(user, "[pick("Chaos chaos!", "You can do anything!", "You hear a mariachi band playing in the distance.", \ "Would you like a glass of water?", "What fun is there in making sense?", "Maybe you ought to go back home and crawl under your bed.", \ "Time to dual wield chaos wands!", "Sixty percent of the time, it works every time.", "Cheese for everyone!", "You hear a deep voice cackling.", \ "Xom bursts into laughter!", "Xom thinks this is hilarious!")]") var/obj/item/projectile/magic/chaos/proj = new /obj/item/projectile/magic/chaos(src) proj.chaos_chaos(user) qdel(proj) charges-- ..()