diff --git a/baystation12.dme b/baystation12.dme index 7aa66972893..b5236c88e00 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -154,6 +154,7 @@ #include "code\datums\spells\area_teleport.dm" #include "code\datums\spells\charge.dm" #include "code\datums\spells\conjure.dm" +#include "code\datums\spells\construct_spells.dm" #include "code\datums\spells\dumbfire.dm" #include "code\datums\spells\emplosion.dm" #include "code\datums\spells\ethereal_jaunt.dm" diff --git a/code/datums/spells/charge.dm b/code/datums/spells/charge.dm index 31a3d3c999f..c1fa2866b67 100644 --- a/code/datums/spells/charge.dm +++ b/code/datums/spells/charge.dm @@ -48,6 +48,9 @@ I.max_charges = 0 burnt_out = 1 I.charges = I.max_charges + if(istype(item,/obj/item/weapon/gun/magic/wand) && I.max_charges != 0) + var/obj/item/weapon/gun/magic/W = item + W.icon_state = initial(W.icon_state) charged_item = I break else if(istype(item, /obj/item/weapon/cell/)) diff --git a/code/game/gamemodes/wizard/rightandwrong.dm b/code/game/gamemodes/wizard/rightandwrong.dm index 68188237180..ba5f062ada4 100644 --- a/code/game/gamemodes/wizard/rightandwrong.dm +++ b/code/game/gamemodes/wizard/rightandwrong.dm @@ -7,7 +7,7 @@ if(H.stat == 2 || !(H.client)) continue if(H.mind) if(H.mind.special_role == "Wizard" || H.mind.special_role == "apprentice") continue - if(prob(25)) + if(prob(25) && !(H.mind in ticker.mode.traitors)) ticker.mode.traitors += H.mind H.mind.special_role = "traitor" var/datum/objective/survive/survive = new @@ -20,7 +20,7 @@ H << "Objective #[obj_count]: [OBJ.explanation_text]" obj_count++ var/randomizeguns = pick("taser","egun","laser","revolver","detective","smg","nuclear","deagle","gyrojet","pulse","silenced","cannon","doublebarrel","shotgun","combatshotgun","mateba","smg","uzi","crossbow","saw") - var/randomizemagic = pick("fireball","smoke","blind","mindswap","forcewall","knock","horsemask","charge","wandnothing", "wanddeath", "wandresurrection", "wandpolymorph", "wandteleport", "wanddoor", "wandfireball", "staffchange", "staffanimation", "staffhealing", "armor", "scrying") + var/randomizemagic = pick("fireball","smoke","blind","mindswap","forcewall","knock","horsemask","charge","wandnothing", "wanddeath", "wandresurrection", "wandpolymorph", "wandteleport", "wanddoor", "wandfireball", "staffchange", "staffhealing", "armor", "scrying") if(!summon_type) switch (randomizeguns) if("taser") @@ -96,8 +96,6 @@ new /obj/item/weapon/gun/magic/wand/door(get_turf(H)) if("staffchange") new /obj/item/weapon/gun/magic/staff/change(get_turf(H)) - if("staffanimation") - new /obj/item/weapon/gun/magic/staff/animate(get_turf(H)) if("staffhealing") new /obj/item/weapon/gun/magic/staff/healing(get_turf(H)) if("armor") diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index d1cc979f48c..fe52f46c618 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -795,7 +795,7 @@ /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/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) //Pretty much everything that had a chance to spawn. - contraband = list(/obj/item/clothing/suit/cardborg = 1,/obj/item/clothing/head/cardborg = 1,/obj/item/clothing/suit/judgerobe = 1,/obj/item/clothing/head/powdered_wig = 1) + contraband = list(/obj/item/clothing/suit/cardborg = 1,/obj/item/clothing/head/cardborg = 1,/obj/item/clothing/suit/judgerobe = 1,/obj/item/clothing/head/powdered_wig = 1,/obj/item/weapon/gun/magic/wand = 1) 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, /obj/item/weapon/shield/riot/roman = 1) refill_canister = /obj/item/weapon/vending_refill/autodrobe /obj/machinery/vending/dinnerware diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm index 95a15b83e8a..e7521400f93 100644 --- a/code/modules/admin/secrets.dm +++ b/code/modules/admin/secrets.dm @@ -117,6 +117,8 @@ Make all items look like guns
Japanese Animes Mode
Egalitarian Station Mode
+ Summon Guns
+ Summon Magic

Change Security Level To Green
Change Security Level To Blue
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index cb40adac04f..c1b0b41fc1f 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -2274,6 +2274,14 @@ feedback_add_details("admin_secrets_fun_used","OO") usr.client.only_one() // message_admins("[key_name_admin(usr)] has triggered a battle to the death (only one)") + if("guns") + feedback_inc("admin_secrets_fun_used",1) + feedback_add_details("admin_secrets_fun_used","SG") + usr.rightandwrong(0) + if("magic") + feedback_inc("admin_secrets_fun_used",1) + feedback_add_details("admin_secrets_fun_used","SM") + usr.rightandwrong(1) if("securitylevel0") set_security_level(0) message_admins("\blue [key_name_admin(usr)] change security level to Green.", 1) diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm index f83a0206be7..c14e9f73f75 100644 --- a/code/modules/projectiles/guns/magic/wand.dm +++ b/code/modules/projectiles/guns/magic/wand.dm @@ -2,7 +2,7 @@ name = "wand of nothing" desc = "It's not just a stick, it's a MAGIC stick!" projectile_type = "/obj/item/projectile/magic" - icon_state = "wand6" + icon_state = "nothingwand" item_state = "wand" w_class = 2 can_charge = 0 @@ -35,11 +35,12 @@ ..() /obj/item/weapon/gun/magic/wand/afterattack(atom/target as mob, mob/living/user as mob) + if(!charges) + user << "The [name] whizzles quietly." + icon_state = "[icon_state]-drained" + return if(target == user) - if(charges) - zap_self(user) - else - user << "The [name] whizzles quietly." + zap_self(user) else ..() @@ -50,7 +51,7 @@ name = "wand of death" desc = "This deadly wand overwhelms the victim's body with pure energy, slaying them without fail." projectile_type = "/obj/item/projectile/magic/death" - icon_state = "wand4" + icon_state = "deathwand" max_charges = 3 //3, 2, 2, 1 /obj/item/weapon/gun/magic/wand/death/zap_self(mob/living/user as mob) @@ -66,7 +67,7 @@ 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." projectile_type = "/obj/item/projectile/magic/resurrection" - icon_state = "wand1" + icon_state = "revivewand" max_charges = 3 //3, 2, 2, 1 /obj/item/weapon/gun/magic/wand/resurrection/zap_self(mob/living/user as mob) @@ -87,7 +88,7 @@ name = "wand of polymorph" desc = "This wand is attuned to chaos and will radically alter the victim's form." projectile_type = "/obj/item/projectile/magic/change" - icon_state = "wand5" + icon_state = "polywand" max_charges = 10 //10, 5, 5, 4 /obj/item/weapon/gun/magic/wand/polymorph/zap_self(mob/living/user as mob) @@ -100,7 +101,7 @@ name = "wand of teleportation" desc = "This wand will wrench targets through space and time to move them somewhere else." projectile_type = "/obj/item/projectile/magic/teleport" - icon_state = "wand3" + icon_state = "telewand" max_charges = 10 //10, 5, 5, 4 /obj/item/weapon/gun/magic/wand/teleport/zap_self(mob/living/user as mob) @@ -115,7 +116,7 @@ name = "wand of door creation" desc = "This particular wand can create doors in any wall for the unscrupulous wizard who shuns teleportation magics." projectile_type = "/obj/item/projectile/magic/door" - icon_state = "wand0" + icon_state = "doorwand" max_charges = 20 //20, 10, 10, 7 /obj/item/weapon/gun/magic/wand/door/zap_self() @@ -125,7 +126,7 @@ name = "wand of fireball" desc = "This wand shoots scorching balls of fire that explode into destructive flames." projectile_type = "/obj/item/projectile/magic/fireball" - icon_state = "wand2" + icon_state = "firewand" max_charges = 8 //8, 4, 4, 3 /obj/item/weapon/gun/magic/wand/fireball/zap_self(mob/living/user as mob) diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 79a6652bff2..dd53a21e051 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -38,21 +38,26 @@ if(istype(target,/mob)) var/old_stat = target.stat - if(target.stat == DEAD) - dead_mob_list -= target - living_mob_list += target - target.stat = CONSCIOUS - target.tod = null - target.setToxLoss(0) - target.setOxyLoss(0) - target.setCloneLoss(0) - target.SetParalysis(0) - target.SetStunned(0) - target.SetWeakened(0) - target.radiation = 0 - target.heal_overall_damage(target.getBruteLoss(), target.getFireLoss()) - target.reagents.clear_reagents() - target.suiciding = 0 + if(isanimal(target) && target.stat == DEAD) + var/mob/living/simple_animal/O = target + var/mob/living/simple_animal/A = new O.type(O.loc) + A.real_name = O.real_name + A.name = O.name + if(iscorgi(O)) + var/mob/living/simple_animal/corgi/C = O + if(C.inventory_head) + C.inventory_head.loc = C.loc + if(C.inventory_back) + C.inventory_back.loc = C.loc + if(O.mind) + O.mind.transfer_to(A) + else + A.key = O.key + del(O) + target = A + else + target.revive() + target.suiciding = 0 if(!target.ckey) for(var/mob/dead/observer/ghost in player_list) if(target.real_name == ghost.real_name) diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi index ea59b17e8ae..96c8a1cd18d 100644 Binary files a/icons/obj/gun.dmi and b/icons/obj/gun.dmi differ diff --git a/icons/obj/library.dmi b/icons/obj/library.dmi index 4e8f312a1ce..f76a3ab4e3f 100644 Binary files a/icons/obj/library.dmi and b/icons/obj/library.dmi differ