diff --git a/code/game/gamemodes/wizard/rightandwrong.dm b/code/game/gamemodes/wizard/rightandwrong.dm index c8acec3b497..b55db26e1e1 100644 --- a/code/game/gamemodes/wizard/rightandwrong.dm +++ b/code/game/gamemodes/wizard/rightandwrong.dm @@ -1,7 +1,7 @@ //In this file: Summon Magic/Summon Guns/Summon Events /proc/rightandwrong(summon_type, mob/user, survivor_probability) //0 = Summon Guns, 1 = Summon Magic - var/list/gunslist = list("taser","egun","laser","revolver","detective","c20r","nuclear","deagle","gyrojet","pulse","suppressed","cannon","doublebarrel","shotgun","combatshotgun","bulldog","mateba","sabr","crossbow","saw","car","boltaction","speargun","arg","uzi") + var/list/gunslist = list("taser","egun","laser","revolver","detective","c20r","nuclear","deagle","gyrojet","pulse","suppressed","cannon","doublebarrel","shotgun","combatshotgun","bulldog","mateba","sabr","crossbow","saw","car","boltaction","speargun","arg","uzi","alienpistol","dragnet","turret","pulsecarbine","decloner","mindflayer","hyperkinetic","advplasmacutter","wormhole","wt550","bulldog","grenadelauncher","goldenrevolver","sniper","medibeam","scatterbeam") var/list/magiclist = list("fireball","smoke","blind","mindswap","forcewall","knock","horsemask","charge", "summonitem", "wandnothing", "wanddeath", "wandresurrection", "wandpolymorph", "wandteleport", "wanddoor", "wandfireball", "staffchange", "staffhealing", "armor", "scrying","staffdoor","voodoo", "special") var/list/magicspeciallist = list("staffchange","staffanimation", "wandbelt", "contract", "staffchaos", "necromantic") @@ -32,66 +32,92 @@ var/randomizemagic = pick(magiclist) var/randomizemagicspecial = pick(magicspeciallist) if(!summon_type) + var/obj/item/weapon/gun/G switch (randomizeguns) if("taser") - new /obj/item/weapon/gun/energy/gun/advtaser(get_turf(H)) + G = new /obj/item/weapon/gun/energy/gun/advtaser(get_turf(H)) if("egun") - new /obj/item/weapon/gun/energy/gun(get_turf(H)) + G = new /obj/item/weapon/gun/energy/gun(get_turf(H)) if("laser") - new /obj/item/weapon/gun/energy/laser(get_turf(H)) + G = new /obj/item/weapon/gun/energy/laser(get_turf(H)) if("revolver") - new /obj/item/weapon/gun/projectile/revolver(get_turf(H)) + G = new /obj/item/weapon/gun/projectile/revolver(get_turf(H)) if("detective") - new /obj/item/weapon/gun/projectile/revolver/detective(get_turf(H)) + G = new /obj/item/weapon/gun/projectile/revolver/detective(get_turf(H)) if("deagle") - new /obj/item/weapon/gun/projectile/automatic/pistol/deagle/camo(get_turf(H)) + G = new /obj/item/weapon/gun/projectile/automatic/pistol/deagle/camo(get_turf(H)) if("gyrojet") - new /obj/item/weapon/gun/projectile/automatic/gyropistol(get_turf(H)) + G = new /obj/item/weapon/gun/projectile/automatic/gyropistol(get_turf(H)) if("pulse") - new /obj/item/weapon/gun/energy/pulse(get_turf(H)) + G = new /obj/item/weapon/gun/energy/pulse(get_turf(H)) if("suppressed") - new /obj/item/weapon/gun/projectile/automatic/pistol(get_turf(H)) + G = new /obj/item/weapon/gun/projectile/automatic/pistol(get_turf(H)) new /obj/item/weapon/suppressor(get_turf(H)) if("doublebarrel") - new /obj/item/weapon/gun/projectile/revolver/doublebarrel(get_turf(H)) + G = new /obj/item/weapon/gun/projectile/revolver/doublebarrel(get_turf(H)) if("shotgun") - new /obj/item/weapon/gun/projectile/shotgun(get_turf(H)) + G = new /obj/item/weapon/gun/projectile/shotgun(get_turf(H)) if("combatshotgun") - new /obj/item/weapon/gun/projectile/shotgun/automatic/combat(get_turf(H)) + G = new /obj/item/weapon/gun/projectile/shotgun/automatic/combat(get_turf(H)) if("arg") - new /obj/item/weapon/gun/projectile/automatic/ar(get_turf(H)) + G = new /obj/item/weapon/gun/projectile/automatic/ar(get_turf(H)) if("mateba") - new /obj/item/weapon/gun/projectile/revolver/mateba(get_turf(H)) + G = new /obj/item/weapon/gun/projectile/revolver/mateba(get_turf(H)) if("boltaction") - new /obj/item/weapon/gun/projectile/shotgun/boltaction(get_turf(H)) + G = new /obj/item/weapon/gun/projectile/shotgun/boltaction(get_turf(H)) if("speargun") - new /obj/item/weapon/gun/projectile/automatic/speargun(get_turf(H)) + G = new /obj/item/weapon/gun/projectile/automatic/speargun(get_turf(H)) if("uzi") - new /obj/item/weapon/gun/projectile/automatic/mini_uzi(get_turf(H)) + G = new /obj/item/weapon/gun/projectile/automatic/mini_uzi(get_turf(H)) if("cannon") - var/obj/item/weapon/gun/energy/lasercannon/gat = new(get_turf(H)) - gat.pin = new /obj/item/device/firing_pin //no authentication pins for spawned guns. fun allowed. + G = new /obj/item/weapon/gun/energy/lasercannon(get_turf(H)) if("crossbow") - var/obj/item/weapon/gun/energy/kinetic_accelerator/crossbow/large/gat = new(get_turf(H)) - gat.pin = new /obj/item/device/firing_pin + G = new /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow/large(get_turf(H)) if("nuclear") - var/obj/item/weapon/gun/energy/gun/nuclear/gat = new(get_turf(H)) - gat.pin = new /obj/item/device/firing_pin + G = new /obj/item/weapon/gun/energy/gun/nuclear(get_turf(H)) if("sabr") - var/obj/item/weapon/gun/projectile/automatic/proto/gat = new(get_turf(H)) - gat.pin = new /obj/item/device/firing_pin + G = new /obj/item/weapon/gun/projectile/automatic/proto(get_turf(H)) if("bulldog") - var/obj/item/weapon/gun/projectile/automatic/shotgun/bulldog/gat = new(get_turf(H)) - gat.pin = new /obj/item/device/firing_pin + G = new /obj/item/weapon/gun/projectile/automatic/shotgun/bulldog(get_turf(H)) if("c20r") - var/obj/item/weapon/gun/projectile/automatic/c20r/gat = new(get_turf(H)) - gat.pin = new /obj/item/device/firing_pin + G = new /obj/item/weapon/gun/projectile/automatic/c20r(get_turf(H)) if("saw") - var/obj/item/weapon/gun/projectile/automatic/l6_saw/gat = new(get_turf(H)) - gat.pin = new /obj/item/device/firing_pin + G = new /obj/item/weapon/gun/projectile/automatic/l6_saw(get_turf(H)) if("car") - var/obj/item/weapon/gun/projectile/automatic/m90/gat = new(get_turf(H)) - gat.pin = new /obj/item/device/firing_pin + G = new /obj/item/weapon/gun/projectile/automatic/m90(get_turf(H)) + if("alienpistol") + G = new /obj/item/weapon/gun/energy/alien(get_turf(H)) + if("dragnet") + G = new /obj/item/weapon/gun/energy/gun/dragnet(get_turf(H)) + if("turret") + G = new /obj/item/weapon/gun/energy/gun/turret(get_turf(H)) + if("pulsecarbine") + G = new /obj/item/weapon/gun/energy/pulse/carbine(get_turf(H)) + if("decloner") + G = new /obj/item/weapon/gun/energy/decloner(get_turf(H)) + if("mindflayer") + G = new /obj/item/weapon/gun/energy/mindflayer(get_turf(H)) + if("hyperkinetic") + G = new /obj/item/weapon/gun/energy/kinetic_accelerator/hyper(get_turf(H)) + if("advplasmacutter") + G = new /obj/item/weapon/gun/energy/plasmacutter/adv(get_turf(H)) + if("wormhole") + G = new /obj/item/weapon/gun/energy/wormhole_projector(get_turf(H)) + if("wt550") + G = new /obj/item/weapon/gun/projectile/automatic/wt550(get_turf(H)) + if("bulldog") + G = new /obj/item/weapon/gun/projectile/automatic/shotgun(get_turf(H)) + if("grenadelauncher") + G = new /obj/item/weapon/gun/projectile/revolver/grenadelauncher(get_turf(H)) + if("goldenrevolver") + G = new /obj/item/weapon/gun/projectile/revolver/golden(get_turf(H)) + if("sniper") + G = new /obj/item/weapon/gun/projectile/sniper_rifle(get_turf(H)) + if("medibeam") + G = new /obj/item/weapon/gun/medbeam(get_turf(H)) + if("scatterbeam") + G = new /obj/item/weapon/gun/energy/laser/scatter(get_turf(H)) + G.unlock() playsound(get_turf(H),'sound/magic/Summon_guns.ogg', 50, 1) else diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index ac922b9637a..51e0a7822be 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -428,6 +428,10 @@ obj/item/weapon/gun/proc/newshot() process_fire(target, user, 1, params) +/obj/item/weapon/gun/proc/unlock() //used in summon guns and as a convience for admins + if(pin) + qdel(pin) + pin = new /obj/item/device/firing_pin ///////////// // ZOOMING // diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index e2659248250..ea52cf11f12 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -39,7 +39,7 @@ item_state = "laser" desc = "An industrial-grade heavy-duty laser rifle with a modified laser lense to scatter its shot into multiple smaller lasers. The inner-core can self-charge for theorically infinite use." origin_tech = "combat=5;materials=4;powerstorage=4" - ammo_type = list(/obj/item/ammo_casing/energy/laser, /obj/item/ammo_casing/energy/laser/scatter) + ammo_type = list(/obj/item/ammo_casing/energy/laser/scatter, /obj/item/ammo_casing/energy/laser) /obj/item/weapon/gun/energy/laser/cyborg can_charge = 0 @@ -55,7 +55,7 @@ /obj/item/weapon/gun/energy/laser/scatter name = "scatter laser gun" desc = "A laser gun equipped with a refraction kit that spreads bolts." - ammo_type = list(/obj/item/ammo_casing/energy/laser, /obj/item/ammo_casing/energy/laser/scatter) + ammo_type = list(/obj/item/ammo_casing/energy/laser/scatter, /obj/item/ammo_casing/energy/laser) /obj/item/weapon/gun/energy/lasercannon name = "laser cannon"