diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm index a5c7ddc0f94..d1825dc3583 100644 --- a/code/modules/projectiles/guns/magic.dm +++ b/code/modules/projectiles/guns/magic.dm @@ -75,3 +75,38 @@ /obj/item/weapon/gun/magic/shoot_with_empty_chamber(mob/living/user) to_chat(user, "The [name] whizzles quietly.") return + +/obj/item/weapon/gun/magic/wand + name = "wand of nothing" + desc = "This wand is boring to watch because... it cant do anything." + icon = 'icons/obj/wizard.dmi' + icon_state = "wand_null" + item_state = "wand_null" + fire_sound = 'sound/weapons/guns/gunpulse_emitter.ogg' + flags = CONDUCT + slot_flags = SLOT_FLAGS_BACK + w_class = SIZE_NORMAL + max_charges = 1 /*Weaker that staff, but cheaper*/ + charges = 0 + recharge_rate = 1 /* Recharge spells = origin spell cooldown*/ + charge_tick = 0 + can_charge = 1 + ammo_type = /obj/item/ammo_casing/magic + global_access = TRUE /*Yes, it is intentional - Ro2tCrab*/ + origin_tech = null + item_action_types = null + clumsy_check = 0 + can_suicide_with = FALSE + can_be_holstered = FALSE + + lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' //not really a gun and some toys use these inhands + righthand_file = 'icons/mob/inhands/items_righthand.dmi' + +/obj/item/weapon/gun/magic/wand/proc/zap_self(mob/living/user) + user.visible_message(" [user] zaps self with [src].") + playsound(user, fire_sound, VOL_EFFECTS_MASTER, TRUE) + +/obj/item/weapon/gun/magic/wand/attack(mob/living/M, mob/living/user, def_zone) + if(M == user) + zap_self() + ..() diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm new file mode 100644 index 00000000000..5a81b3be60b --- /dev/null +++ b/code/modules/projectiles/guns/magic/wand.dm @@ -0,0 +1,59 @@ +/obj/item/weapon/gun/magic/wand/healing + name = "wand of healing" + desc = "An artefact that uses healing magics to heal the living and revive the dead. Rarely utilized on others, for some reason" + ammo_type = /obj/item/ammo_casing/magic/change + icon_state = "staffofchange" + item_state = "staffofchange" + fire_delay = 120 + max_charges = 1 + var/heal_power = 20 +/obj/item/weapon/gun/magic/wand/healing/zap_self(mob/living/user) + ..() + if(isliving(user)) + user.apply_damages(heal_power, heal_power, heal_power, heal_power, heal_power, heal_power) + user.apply_effects(heal_power, heal_power, heal_power, heal_power, heal_power, heal_power, heal_power, heal_power) + to_chat(user, " Ты чувствуешь себя лучше! )") + +/obj/item/weapon/gun/magic/wand/blink + name = "staff of blink" + desc = "An artefact that makes no qualms about depositing teleportees in space, fires, or the center of a black hole." + ammo_type = /obj/item/ammo_casing/magic/animate + icon_state = "staffofanimation" + item_state = "staffofanimation" + +/obj/item/weapon/gun/magic/wand/fireball + name = "wand of fireball" + desc = "A useful artefact for burning those you don't like and everyone else too. Point away from face." + ammo_type = /obj/item/ammo_casing/magic/heal + icon_state = "staffofhealing" + item_state = "staffofhealing" + ammo_type = /obj/item/ammo_casing/magic/fireball + +/obj/item/weapon/gun/magic/wand/forcewall + name = "staff of walls" + desc = "An artefact that spits bolts of transformative magic that can create walls." + ammo_type = /obj/item/projectile/atom_create/magic + icon_state = "staffofdoor" + item_state = "staffofdoor" + fire_sound = 'sound/magic/Staff_Door.ogg' + +/obj/item/weapon/gun/magic/wand/magic_mirror + name = "wand of mirrors" + icon_state = "lavastaff" + item_state = "lavastaff" + desc = "An artefact that contains powers of magic mirror." + ammo_type = /obj/item/ammo_casing/magic/fireball + +/obj/item/weapon/gun/magic/wand/mob_alchemy/magic_carp + name = "wand of corpse melting" + icon_state = "lavastaff" + item_state = "lavastaff" + desc = "An artefact that turns corpses into aggresive blood cloths" + ammo_type = /obj/item/ammo_casing/magic/fireball + +/obj/item/weapon/gun/magic/wand/stone + name = "wand of corpse melting" + icon_state = "lavastaff" + item_state = "lavastaff" + desc = "An artefact that turns corpses into aggresive blood cloths" + ammo_type = /obj/item/ammo_casing/magic/fireball diff --git a/code/modules/projectiles/projectile/atom_create b/code/modules/projectiles/projectile/atom_create new file mode 100644 index 00000000000..9ea93ffcac1 --- /dev/null +++ b/code/modules/projectiles/projectile/atom_create @@ -0,0 +1,9 @@ +// For those cases when we need to create an ATOM at the point of impact + +/obj/item/projectile/atom_create +var/atom/effect = null //effect we want to spawn + +/obj/item/projectile/atom_create/Bump(atom/A, forced) + . = ..() + if(A == original) + bumped = TRUE diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 9ab7d84d23c..9aad290ddca 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -266,3 +266,13 @@ var/throwdir = get_dir(firer,target) T.throw_at(get_edge_target_turf(target, throwdir),10,10) return 1 + +/obj/item/projectile/magic/wand/ + name = "bolt of nothing" + icon_state = "ice_1" + light_color = "#00bfff" + +/obj/item/projectile/atom_create/magic + name = "bolt of nothing creation" + icon_state = "ice_1" + light_color = "#00bfff"