From 1ff23cd3caa52d203ad4f2176d8c95990c3f8a35 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Fri, 29 Jan 2016 09:12:37 -0500 Subject: [PATCH] lesser summon guns, wizman update --- code/datums/spells/infinite_guns.dm | 22 +++ code/game/gamemodes/wizard/spellbook.dm | 155 ++++++++++++------ code/game/objects/items/weapons/twohanded.dm | 17 +- .../projectiles/guns/projectile/shotgun.dm | 32 ++++ icons/mob/actions.dmi | Bin 51998 -> 52285 bytes paradise.dme | 1 + 6 files changed, 174 insertions(+), 53 deletions(-) create mode 100644 code/datums/spells/infinite_guns.dm diff --git a/code/datums/spells/infinite_guns.dm b/code/datums/spells/infinite_guns.dm new file mode 100644 index 00000000000..10b8612c858 --- /dev/null +++ b/code/datums/spells/infinite_guns.dm @@ -0,0 +1,22 @@ +/obj/effect/proc_holder/spell/targeted/infinite_guns + name = "Lesser Summon Guns" + desc = "Why reload when you have infinite guns? Summons an unending stream of bolt action rifles. Requires both hands free to use." + invocation_type = "none" + include_user = 1 + range = -1 + + school = "conjuration" + charge_max = 750 + clothes_req = 1 + cooldown_min = 10 //Gun wizard + action_icon_state = "bolt_action" + + + +/obj/effect/proc_holder/spell/targeted/infinite_guns/cast(list/targets, mob/user = usr) + for(var/mob/living/carbon/C in targets) + C.drop_item() + C.swap_hand() + C.drop_item() + var/obj/item/weapon/gun/projectile/shotgun/boltaction/enchanted/GUN = new + C.put_in_hands(GUN) diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index 40797070b76..1f91e489934 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -3,9 +3,9 @@ var/spell_type = null var/desc = "" - var/category = "Offensive Spells" + var/category = "Offensive" var/log_name = "XX" //What it shows up as in logs - var/cost = 1 + var/cost = 2 var/refundable = 1 var/surplus = -1 // -1 for infinite, not used by anything atm var/obj/effect/proc_holder/spell/S = null //Since spellbooks can be used by only one person anyway we can track the actual spell @@ -99,6 +99,7 @@ name = "Remove Clothes Requirement" spell_type = /obj/effect/proc_holder/spell/noclothes log_name = "NC" + category = "Defensive" /datum/spellbook_entry/fireball name = "Fireball" @@ -109,6 +110,7 @@ name = "Magic Missile" spell_type = /obj/effect/proc_holder/spell/targeted/projectile/magic_missile log_name = "MM" + category = "Defensive" /datum/spellbook_entry/disintegrate name = "Disintegrate" @@ -119,12 +121,14 @@ name = "Disable Tech" spell_type = /obj/effect/proc_holder/spell/targeted/emplosion/disable_tech log_name = "DT" - category = "Utility Spells" + category = "Defensive" + cost = 1 /datum/spellbook_entry/repulse name = "Repulse" spell_type = /obj/effect/proc_holder/spell/aoe_turf/repulse log_name = "RP" + category = "Defensive" /datum/spellbook_entry/timestop name = "Time Stop" @@ -136,59 +140,57 @@ name = "Smoke" spell_type = /obj/effect/proc_holder/spell/targeted/smoke log_name = "SM" - category = "Utility Spells" + category = "Defensive" + cost = 1 /datum/spellbook_entry/blind name = "Blind" spell_type = /obj/effect/proc_holder/spell/targeted/trigger/blind log_name = "BD" + cost = 1 /datum/spellbook_entry/mindswap name = "Mindswap" spell_type = /obj/effect/proc_holder/spell/targeted/mind_transfer log_name = "MT" - category = "Utility Spells" + category = "Mobility" /datum/spellbook_entry/forcewall name = "Force Wall" spell_type = /obj/effect/proc_holder/spell/aoe_turf/conjure/forcewall log_name = "FW" - category = "Utility Spells" + category = "Defensive" + cost = 1 /datum/spellbook_entry/blink name = "Blink" spell_type = /obj/effect/proc_holder/spell/targeted/turf_teleport/blink log_name = "BL" - category = "Utility Spells" + category = "Mobility" /datum/spellbook_entry/teleport name = "Teleport" spell_type = /obj/effect/proc_holder/spell/targeted/area_teleport/teleport log_name = "TP" - category = "Utility Spells" + category = "Mobility" /datum/spellbook_entry/mutate name = "Mutate" spell_type = /obj/effect/proc_holder/spell/targeted/genetic/mutate log_name = "MU" - category = "Utility Spells" /datum/spellbook_entry/jaunt name = "Ethereal Jaunt" spell_type = /obj/effect/proc_holder/spell/targeted/ethereal_jaunt log_name = "EJ" - category = "Utility Spells" + category = "Mobility" /datum/spellbook_entry/knock name = "Knock" spell_type = /obj/effect/proc_holder/spell/aoe_turf/knock log_name = "KN" - category = "Utility Spells" - -/datum/spellbook_entry/horseman - name = "Curse of The Horseman" - spell_type = /obj/effect/proc_holder/spell/targeted/horsemask - log_name = "HH" + category = "Mobility" + cost = 1 /datum/spellbook_entry/fleshtostone name = "Flesh to Stone" @@ -199,26 +201,45 @@ name = "Summon Item" spell_type = /obj/effect/proc_holder/spell/targeted/summonitem log_name = "IS" - category = "Utility Spells" + category = "Assistance" + cost = 1 /datum/spellbook_entry/lichdom name = "Bind Soul" spell_type = /obj/effect/proc_holder/spell/targeted/lichdom log_name = "LD" - category = "Utility Spells" + category = "Defensive" /datum/spellbook_entry/lightningbolt name = "Lightning Bolt" spell_type = /obj/effect/proc_holder/spell/targeted/lightning log_name = "LB" +/datum/spellbook_entry/infinite_guns + name = "Lesser Summon Guns" + spell_type = /obj/effect/proc_holder/spell/targeted/infinite_guns + log_name = "IG" + cost = 4 + +/datum/spellbook_entry/horseman + name = "Curse of The Horseman" + spell_type = /obj/effect/proc_holder/spell/targeted/horsemask + log_name = "HH" + +/datum/spellbook_entry/charge + name = "Charge" + spell_type = /obj/effect/proc_holder/spell/targeted/charge + log_name = "CH" + category = "Assistance" + cost = 1 + /datum/spellbook_entry/item name = "Buy Item" - category = "Artifacts" refundable = 0 buy_word = "Summon" var/item_path= null + /datum/spellbook_entry/item/Buy(var/mob/living/carbon/human/user,var/obj/item/weapon/spellbook/book) new item_path(get_turf(user)) feedback_add_details("wizard_spell_learned",log_name) @@ -244,6 +265,7 @@ desc = "An arcane staff capable of shooting bolts of eldritch energy which cause inanimate objects to come to life. This magic doesn't affect machines." item_path = /obj/item/weapon/gun/magic/staff/animate log_name = "SA" + category = "Assistance" /datum/spellbook_entry/item/staffchaos name = "Staff of Chaos" @@ -256,26 +278,23 @@ desc = "A particular staff that can mold solid metal into ornate wooden doors. Useful for getting around in the absence of other transportation. Does not work on glass." item_path = /obj/item/weapon/gun/magic/staff/door log_name = "SD" + cost = 1 + category = "Mobility" + +/datum/spellbook_entry/item/staffhealing + name = "Staff of Healing" + desc = "An altruistic staff that can heal the lame and raise the dead." + item_path = /obj/item/weapon/gun/magic/staff/healing + log_name = "SH" + cost = 1 + category = "Defensive" /datum/spellbook_entry/item/scryingorb name = "Scrying Orb" desc = "An incandescent orb of crackling energy, using it will allow you to ghost while alive, allowing you to spy upon the station with ease. In addition, buying it will permanently grant you x-ray vision." item_path = /obj/item/weapon/scrying log_name = "SO" - -/datum/spellbook_entry/item/bloodbottle - name = "Bottle of Blood" - desc = "A bottle of magically infused blood, the smell of which will attract extradimensional beings when broken. Be careful though, the kinds of creatures summoned by blood magic are indiscriminate in their killing, and you yourself may become a victim." - item_path = /obj/item/weapon/antag_spawner/slaughter_demon - log_name = "BB" - limit = 3 - -/datum/spellbook_entry/item/tarotdeck - name = "Tarot Deck" - desc = "A deck of tarot cards that can be used to summon a spirit companion for the wizard." - item_path = /obj/item/weapon/guardiancreator - log_name = "TD" - limit = 1 + category = "Defensive" /datum/spellbook_entry/item/scryingorb/Buy(var/mob/living/carbon/human/user,var/obj/item/weapon/spellbook/book) if(..()) @@ -293,6 +312,7 @@ desc = "Soul Stone Shards are ancient tools capable of capturing and harnessing the spirits of the dead and dying. The spell Artificer allows you to create arcane machines for the captured souls to pilot." item_path = /obj/item/weapon/storage/belt/soulstone/full log_name = "SS" + category = "Assistance" /datum/spellbook_entry/item/soulstones/Buy(var/mob/living/carbon/human/user,var/obj/item/weapon/spellbook/book) . =..() @@ -305,18 +325,21 @@ desc = "A Necromantic stone is able to resurrect three dead individuals as skeletal thralls for you to command." item_path = /obj/item/device/necromantic_stone log_name = "NS" + category = "Assistance" /datum/spellbook_entry/item/wands name = "Wand Assortment" desc = "A collection of wands that allow for a wide variety of utility. Wands do not recharge, so be conservative in use. Comes in a handy belt." item_path = /obj/item/weapon/storage/belt/wands/full log_name = "WA" + category = "Defensive" /datum/spellbook_entry/item/armor name = "Mastercrafted Armor Set" desc = "An artefact suit of armor that allows you to cast spells while providing more protection against attacks and the void of space." item_path = /obj/item/clothing/suit/space/rig/wizard log_name = "HS" + category = "Defensive" /datum/spellbook_entry/item/armor/Buy(var/mob/living/carbon/human/user,var/obj/item/weapon/spellbook/book) . = ..() @@ -330,6 +353,35 @@ desc = "A magical contract binding an apprentice wizard to your service, using it will summon them to your side." item_path = /obj/item/weapon/contract log_name = "CT" + category = "Assistance" + +/datum/spellbook_entry/item/bloodbottle + name = "Bottle of Blood" + desc = "A bottle of magically infused blood, the smell of which will attract extradimensional beings when broken. Be careful though, the kinds of creatures summoned by blood magic are indiscriminate in their killing, and you yourself may become a victim." + item_path = /obj/item/weapon/antag_spawner/slaughter_demon + log_name = "BB" + limit = 3 + category = "Assistance" + +/datum/spellbook_entry/item/tarotdeck + name = "Tarot Deck" + desc = "A deck of tarot cards that can be used to summon a spirit companion for the wizard." + item_path = /obj/item/weapon/guardiancreator + log_name = "TD" + limit = 1 + category = "Assistance" + +/datum/spellbook_entry/item/mjolnir + name = "Mjolnir" + desc = "A mighty hammer on loan from Thor, God of Thunder. It crackles with barely contained power." + item_path = /obj/item/weapon/twohanded/mjollnir + log_name = "MJ" + +/datum/spellbook_entry/item/singularity_hammer + name = "Singularity Hammer" + desc = "A hammer that creates an intensely powerful field of gravity where it strikes, pulling everthing nearby to the point of impact." + item_path = /obj/item/weapon/twohanded/singularityhammer + log_name = "SI" /datum/spellbook_entry/summon name = "Summon Stuff" @@ -355,7 +407,7 @@ /datum/spellbook_entry/summon/guns name = "Summon Guns" - category = "Challenges" + category = "Rituals" desc = "Nothing could possibly go wrong with arming a crew of lunatics just itching for an excuse to kill you. Just be careful not to stand still too long!" cost = 0 log_name = "SG" @@ -390,8 +442,8 @@ icon_state ="book" throw_speed = 2 throw_range = 5 - w_class = 1.0 - var/uses = 5 + w_class = 1 + var/uses = 10 var/temp = null var/op = 1 var/tab = null @@ -435,17 +487,26 @@ /obj/item/weapon/spellbook/proc/GetCategoryHeader(var/category) var/dat = "" switch(category) - if("Offensive Spells") - dat += "Spells that can be reused endlessly.
" - dat += "The number after the spell name is the cooldown time.
" + if("Offensive") + dat += "Spells and items geared towards debilitating and destroying.

" + dat += "Items are not bound to you and can be stolen. Additionaly they cannot typically be returned once purchased.
" + dat += "For spells: the number after the spell name is the cooldown time.
" dat += "You can reduce this number by spending more points on the spell.
" - if("Utility Spells") - dat += "Spells that can be reused endlessly.
" - dat += "The number after the spell name is the cooldown time.
" + if("Defensive") + dat += "Spells and items geared towards improving your survivabilty or reducing foes ability to attack.

" + dat += "Items are not bound to you and can be stolen. Additionaly they cannot typically be returned once purchased.
" + dat += "For spells: the number after the spell name is the cooldown time.
" + dat += "You can reduce this number by spending more points on the spell.
" + if("Mobility") + dat += "Spells and items geared towards improving your ability to move. It is a good idea to take at least one.

" + dat += "Items are not bound to you and can be stolen. Additionaly they cannot typically be returned once purchased.
" + dat += "For spells: the number after the spell name is the cooldown time.
" + dat += "You can reduce this number by spending more points on the spell.
" + if("Assistance") + dat += "Spells and items geared towards bringing in outside forces to aid you or improving upon your other items and abilties.

" + dat += "Items are not bound to you and can be stolen. Additionaly they cannot typically be returned once purchased.
" + dat += "For spells: the number after the spell name is the cooldown time.
" dat += "You can reduce this number by spending more points on the spell.
" - if("Artifacts") - dat += "Powerful items imbued with eldritch magics. Summoning one will count towards your maximum number of uses.
" - dat += "These items are not bound to you and can be stolen. Additionaly they cannot typically be returned once purchased.
" if("Challenges") dat += "The Wizard Federation typically has hard limits on the potency and number of spells brought to the station based on risk.
" dat += "Arming the station against you will increases the risk, but will grant you one more charge for your spellbook.
" @@ -490,7 +551,7 @@ cat_dat[category] = "
" dat += "
  • [category]
  • " - dat += "
  • Uses remaining : [uses]
  • " + dat += "
  • Points remaining : [uses]
  • " dat += "" var/datum/spellbook_entry/E @@ -514,7 +575,7 @@ dat += cat_dat[category] dat += "" - user << browse(wrap(dat), "window=spellbook;size=700x300") + user << browse(wrap(dat), "window=spellbook;size=700x500") onclose(user, "spellbook") return diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index 2cc2f739dcc..61164a45298 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -466,7 +466,7 @@ vortex(target,user) /obj/item/weapon/twohanded/mjollnir - name = "Mjollnir" + name = "Mjolnir" desc = "A weapon worthy of a god, able to strike with the force of a lightning bolt. It crackles with barely contained energy." icon_state = "mjollnir0" flags = CONDUCT @@ -474,7 +474,7 @@ no_embed = 1 force = 5 force_unwielded = 5 - force_wielded = 20 + force_wielded = 25 throwforce = 30 throw_range = 7 w_class = 5 @@ -485,25 +485,30 @@ var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread() s.set_up(5, 1, target.loc) s.start() - target.take_organ_damage(0,30) target.visible_message("[target.name] was shocked by the [src.name]!", \ "You feel a powerful shock course through your body sending you flying!", \ - "You hear a heavy electrical crack.") + "You hear a heavy electrical crack!") var/atom/throw_target = get_edge_target_turf(target, get_dir(src, get_step_away(target, src))) target.throw_at(throw_target, 200, 4) return /obj/item/weapon/twohanded/mjollnir/attack(mob/M as mob, mob/user as mob) ..() - spawn(0) if(wielded) //if(charged == 5) //charged = 0 playsound(src.loc, "sparks", 50, 1) if(istype(M, /mob/living)) - M.Stun(10) + M.Stun(3) shock(M) +/obj/item/weapon/twohanded/mjollnir/throw_impact(atom/target) + . = ..() + if(istype(target, /mob/living)) + var/mob/living/L = target + L.Stun(3) + shock(L) + /obj/item/weapon/twohanded/mjollnir/update_icon() //Currently only here to fuck with the on-mob icons. icon_state = "mjollnir[wielded]" return diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index d73f7ffee1a..8e057695b3a 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -125,6 +125,38 @@ ..(user) user << "The bolt is [bolt_open ? "open" : "closed"]." +/obj/item/weapon/gun/projectile/shotgun/boltaction/enchanted + name = "enchanted bolt action rifle" + desc = "Careful not to lose your head." + var/guns_left = 30 + mag_type = "/obj/item/ammo_box/magazine/internal/boltaction/enchanted" + +/obj/item/weapon/gun/projectile/shotgun/boltaction/enchanted/New() + ..() + bolt_open = 1 + pump() + +/obj/item/weapon/gun/projectile/shotgun/boltaction/enchanted/dropped() + guns_left = 0 + +/obj/item/weapon/gun/projectile/shotgun/boltaction/enchanted/Fire(atom/target as mob|obj|turf|area, mob/living/carbon/user as mob|obj, params, reflex = 0) + ..() + if(guns_left) + var/obj/item/weapon/gun/projectile/shotgun/boltaction/enchanted/GUN = new + GUN.guns_left = src.guns_left - 1 + user.drop_item() + user.swap_hand() + user.put_in_hands(GUN) + else + user.drop_item() + spawn(0) + throw_at(pick(oview(7,get_turf(user))),1,1) + user.visible_message("[user] tosses aside the spent rifle!") + + +/obj/item/ammo_box/magazine/internal/boltaction/enchanted + max_ammo =1 + ///////////////////////////// // DOUBLE BARRELED SHOTGUN // ///////////////////////////// diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi index c1aad9c6902c54f6596dd70028cf106f7588b095..57d17caaa46525a84032885795bad3d53b0e946b 100644 GIT binary patch delta 11872 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 delta 11583 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 Hn*{w2RC3yG diff --git a/paradise.dme b/paradise.dme index 298937566bb..e31271b9e11 100644 --- a/paradise.dme +++ b/paradise.dme @@ -215,6 +215,7 @@ #include "code\datums\spells\fake_gib.dm" #include "code\datums\spells\genetic.dm" #include "code\datums\spells\horsemask.dm" +#include "code\datums\spells\infinite_guns.dm" #include "code\datums\spells\inflict_handler.dm" #include "code\datums\spells\knock.dm" #include "code\datums\spells\lichdom.dm"