diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 5457a2832c3..afd7e566b97 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -560,7 +560,7 @@ datum/mind if(!(src in ticker.mode.wizards)) ticker.mode.wizards += src special_role = "Wizard" - ticker.mode.learn_basic_spells(current) + //ticker.mode.learn_basic_spells(current) current << "\red You are the Space Wizard!" if("lair") current.loc = pick(wizardstart) diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index cd0aaf6b0bf..9a2f05631d4 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -939,7 +939,7 @@ throw_range = 5 w_class = 1.0 flags = FPRINT | TABLEPASS - var/uses = 4.0 + var/uses = 5.0 var/temp = null var/spell_type = "verb" var/max_uses = 5 diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index 9da0da4711b..ec02105063f 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -13,7 +13,7 @@ dat += "Memorize which spell:
" dat += "The number after the spell name is the cooldown time.
" dat += "Magic Missile (10)
" - dat += "Fireball (10)
" + dat += "Fireball (20)
" // dat += "Disintegrate (60)
" dat += "Disable Technology (60)
" dat += "Smoke (10)
" @@ -26,7 +26,12 @@ dat += "Ethereal Jaunt (60)
" dat += "Knock (10)
" dat += "
" - dat += "Re-memorize Spells
" + dat += "Artefacts:
" + dat += "Powerful items imbued with eldritch magics. Summoning one will count towards your maximum number of spells.
" + dat += "
" + dat += "Staff of Change
" + dat += "
" + dat += "Re-memorize Spells
" user << browse(dat, "window=radio") onclose(user, "radio") return @@ -97,6 +102,10 @@ usr.verbs += /client/proc/knock usr.mind.special_verbs += /client/proc/knock src.temp = "This spell opens nearby doors and does not require wizard garb." + if ("14") + new /obj/item/weapon/gun/energy/staff(get_turf(usr)) + src.temp = "An artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself" + src.max_uses-- else if(spell_type == "object") var/list/available_spells = list("Magic Missile","Fireball","Disintegrate","Disable Tech","Smoke","Blind","Mind Transfer","Forcewall","Blink","Teleport","Mutate","Ethereal Jaunt","Knock") var/already_knows = 0 @@ -147,7 +156,11 @@ if ("13") usr.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/knock(usr) src.temp = "This spell opens nearby doors and does not require wizard garb." - if (href_list["spell_choice"] == "14") + if ("14") + new /obj/item/weapon/gun/energy/staff(get_turf(usr)) + src.temp = "An artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself" + src.max_uses-- + if (href_list["spell_choice"] == "15") var/area/wizard_station/A = locate() if(usr in A.contents) src.uses = src.max_uses diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm index 08c6654f2d9..3105aeb210b 100644 --- a/code/game/gamemodes/wizard/wizard.dm +++ b/code/game/gamemodes/wizard/wizard.dm @@ -50,7 +50,7 @@ /datum/game_mode/wizard/post_setup() for(var/datum/mind/wizard in wizards) forge_wizard_objectives(wizard) - learn_basic_spells(wizard.current) + //learn_basic_spells(wizard.current) equip_wizard(wizard.current) name_wizard(wizard.current) greet_wizard(wizard) @@ -141,7 +141,7 @@ return -/datum/game_mode/proc/learn_basic_spells(mob/living/carbon/human/wizard_mob) +/*/datum/game_mode/proc/learn_basic_spells(mob/living/carbon/human/wizard_mob) if (!istype(wizard_mob)) return if(!config.feature_object_spell_system) @@ -149,7 +149,7 @@ wizard_mob.mind.special_verbs += /client/proc/jaunt else wizard_mob.spell_list += new /obj/effect/proc_holder/spell/targeted/ethereal_jaunt(usr) - +*/ /datum/game_mode/proc/equip_wizard(mob/living/carbon/human/wizard_mob) if (!istype(wizard_mob)) @@ -178,7 +178,7 @@ wizard_mob.equip_if_possible(new /obj/item/weapon/spellbook(wizard_mob), wizard_mob.slot_r_hand) wizard_mob << "You will find a list of available spells in your spell book. Choose your magic arsenal carefully." - wizard_mob << "In your pockets you will find two more important, magical artifacts. Use them as needed." + wizard_mob << "In your pockets you will find a teleport scroll. Use it as needed." wizard_mob.mind.store_memory("Remember: do not forget to prepare your spells.") return 1 diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index a22cbfddb6f..81e106bc1d1 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -500,6 +500,21 @@ Neutralize All Unidentified Life Signs: []
"}, if(!emagged) use_power(700) else use_power(1400) + else if(istype(E, /obj/item/weapon/gun/energy/staff)) + A = new /obj/item/projectile/change( loc ) + A.original = target.loc + icon_state = "target_prism" + if(!emagged) use_power(700) + else use_power(1400) + + else if(istype(E, /obj/item/weapon/gun/energy/ionrifle)) + A = new /obj/item/projectile/ion( loc ) + A.original = target.loc + icon_state = "target_prism" + if(!emagged) use_power(700) + else use_power(1400) + + else if(istype(E, /obj/item/weapon/gun/energy/taser) || istype(E, /obj/item/weapon/gun/energy/stunrevolver)) A = new /obj/item/projectile/energy/electrode( loc ) icon_state = "target_prism" diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 0fc8d0c57e9..18d2e7c5d6f 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -30,49 +30,52 @@ if ((usr.mutations & CLUMSY) && prob(50)) usr << "\red Uh ... how do those things work?!" if (istype(M, /mob/living/carbon/human)) - var/obj/effect/equip_e/human/O = new /obj/effect/equip_e/human( ) - O.source = user - O.target = user - O.item = user.equipped() - O.s_loc = user.loc - O.t_loc = user.loc - O.place = "handcuff" - M.requests += O - spawn( 0 ) - O.process() - return + if(!M.handcuffed) + var/obj/effect/equip_e/human/O = new /obj/effect/equip_e/human( ) + O.source = user + O.target = user + O.item = user.equipped() + O.s_loc = user.loc + O.t_loc = user.loc + O.place = "handcuff" + M.requests += O + spawn( 0 ) + O.process() + return return if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") usr << "\red You don't have the dexterity to do this!" return if (istype(M, /mob/living/carbon/human)) - M.attack_log += text("\[[time_stamp()]\] Has been handcuffed (attempt) by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Attempted to handcuff [M.name] ([M.ckey])") - var/obj/effect/equip_e/human/O = new /obj/effect/equip_e/human( ) - O.source = user - O.target = M - O.item = user.equipped() - O.s_loc = user.loc - O.t_loc = M.loc - O.place = "handcuff" - M.requests += O - spawn( 0 ) - playsound(src.loc, 'handcuffs.ogg', 30, 1, -2) - O.process() - return + if(!M.handcuffed) + M.attack_log += text("\[[time_stamp()]\] Has been handcuffed (attempt) by [user.name] ([user.ckey])") + user.attack_log += text("\[[time_stamp()]\] Attempted to handcuff [M.name] ([M.ckey])") + var/obj/effect/equip_e/human/O = new /obj/effect/equip_e/human( ) + O.source = user + O.target = M + O.item = user.equipped() + O.s_loc = user.loc + O.t_loc = M.loc + O.place = "handcuff" + M.requests += O + spawn( 0 ) + playsound(src.loc, 'handcuffs.ogg', 30, 1, -2) + O.process() + return else - var/obj/effect/equip_e/monkey/O = new /obj/effect/equip_e/monkey( ) - O.source = user - O.target = M - O.item = user.equipped() - O.s_loc = user.loc - O.t_loc = M.loc - O.place = "handcuff" - M.requests += O - spawn( 0 ) - playsound(src.loc, 'handcuffs.ogg', 30, 1, -2) - O.process() - return + if(!M.handcuffed) + var/obj/effect/equip_e/monkey/O = new /obj/effect/equip_e/monkey( ) + O.source = user + O.target = M + O.item = user.equipped() + O.s_loc = user.loc + O.t_loc = M.loc + O.place = "handcuff" + M.requests += O + spawn( 0 ) + playsound(src.loc, 'handcuffs.ogg', 30, 1, -2) + O.process() + return return @@ -497,4 +500,4 @@ if(exposed_temperature >= 373.15) for(var/mob/M in viewers(5, src)) M << "\red \the [src] burns up." - del(src) \ No newline at end of file + del(src) diff --git a/code/game/objects/radio/radio.dm b/code/game/objects/radio/radio.dm index e183ff2d46e..6cb102391d0 100644 --- a/code/game/objects/radio/radio.dm +++ b/code/game/objects/radio/radio.dm @@ -818,4 +818,4 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use channels = op for (var/ch_name in op) secure_radio_connections[ch_name] = radio_controller.add_object(src, radiochannels[ch_name], RADIO_CHAT) - return \ No newline at end of file + return diff --git a/code/game/objects/tanks/jetpack.dm b/code/game/objects/tanks/jetpack.dm index 07034dcd94e..794e6a10dba 100644 --- a/code/game/objects/tanks/jetpack.dm +++ b/code/game/objects/tanks/jetpack.dm @@ -2,7 +2,7 @@ /obj/item/weapon/tank/jetpack name = "Jetpack (Oxygen)" desc = "A tank of compressed oxygen for use as propulsion in zero-gravity areas. Use with caution." - icon_state = "jetpack0" + icon_state = "jetpack" w_class = 4.0 item_state = "jetpack" distribute_pressure = ONE_ATMOSPHERE*O2STANDARD @@ -83,12 +83,12 @@ /obj/item/weapon/tank/jetpack/void_jetpack name = "Void Jetpack (Oxygen)" desc = "It works well in a void." - icon_state = "voidjetpack0" + icon_state = "jetpack-void" item_state = "jetpack-void" /obj/item/weapon/tank/jetpack/black_jetpack name = "Black Jetpack (Oxygen)" desc = "A black model of jetpacks." - icon_state = "black_jetpack0" + icon_state = "jetpack-black" item_state = "jetpack-black" diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 3e03a28f4a5..38735065726 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -388,7 +388,7 @@ Traitors and the like can also be revived with the previous role mostly intact. ticker.mode.equip_traitor(new_character) if("Wizard") new_character.loc = pick(wizardstart) - ticker.mode.learn_basic_spells(new_character) + //ticker.mode.learn_basic_spells(new_character) ticker.mode.equip_wizard(new_character) if("Syndicate") var/obj/effect/landmark/synd_spawn = locate("landmark*Syndicate-Spawn") diff --git a/code/modules/chemical/Chemistry-Reagents.dm b/code/modules/chemical/Chemistry-Reagents.dm index e2566516f6e..d0186db8897 100644 --- a/code/modules/chemical/Chemistry-Reagents.dm +++ b/code/modules/chemical/Chemistry-Reagents.dm @@ -450,7 +450,7 @@ datum on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M.druggy = max(M.druggy, 15) - if(isturf(M.loc)) + if(isturf(M.loc) && !istype(M.loc, /turf/space)) if(M.canmove) if(prob(10)) step(M, pick(cardinal)) if(prob(7)) M:emote(pick("twitch","drool","moan","giggle")) @@ -579,7 +579,8 @@ datum on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom - if(M.canmove) step(M, pick(cardinal)) + if(M.canmove && istype(M.loc, /turf/space)) + step(M, pick(cardinal)) if(prob(5)) M:emote(pick("twitch","drool","moan")) ..() return @@ -652,7 +653,8 @@ datum on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom - if(M.canmove) step(M, pick(cardinal)) + if(M.canmove && istype(M.loc, /turf/space)) + step(M, pick(cardinal)) if(prob(5)) M:emote(pick("twitch","drool","moan")) ..() return diff --git a/code/modules/clothing/suits/robe.dm b/code/modules/clothing/suits/robe.dm index fe5d5ca3c29..f393718186d 100644 --- a/code/modules/clothing/suits/robe.dm +++ b/code/modules/clothing/suits/robe.dm @@ -19,6 +19,13 @@ desc = "Strange-looking hat-wear, makes you want to cast fireballs." icon_state = "marisa" +/obj/item/clothing/head/wizard/magus + name = "Magus Helm" + desc = "A mysterious helmet that hums with an unearthly power" + icon_state = "magus" + item_state = "magus" + + /obj/item/clothing/suit/wizrobe name = "wizard robe" desc = "A magnificant, gem-lined robe that seems to radiate power." diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index 87177caa61a..8cc04a4d2b0 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -604,6 +604,7 @@ if (prob(50)) Paralyse(10) + /obj/effect/equip_e/monkey/process() if (item) item.add_fingerprint(source) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 8af1a2bd5fb..6a9a228a716 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -257,8 +257,8 @@ italics = 1 if("changeling") if(src.changeling) - for(var/mob/living/carbon/aChangeling in world) - if(aChangeling.changeling) + for(var/mob/aChangeling in world) + if(aChangeling.changeling || istype(aChangeling, /mob/dead/observer)) aChangeling << "[gender=="male"?"Mr.":"Mrs."] [changeling.changelingID]: [message]" return ////SPECIAL HEADSETS START diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index c3b345a278c..5bbf52b0fc8 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -24,9 +24,11 @@ obj/item/weapon/gun/energy/staff name = "staff of change" desc = "an artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself" icon = 'gun.dmi' - icon_state = "staff" - item_state = "staff" + icon_state = "staffofchange" + item_state = "staffofchange" fire_sound = 'emitter.ogg' + flags = FPRINT | TABLEPASS | CONDUCT | ONBACK + w_class = 4.0 charge_cost = 200 projectile_type = "/obj/item/projectile/change" origin_tech = null diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index a0886e9754e..cf2da656e67 100644 Binary files a/icons/mob/back.dmi and b/icons/mob/back.dmi differ diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index bd46dc4da96..f99e3e1358e 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/mob/items_lefthand.dmi b/icons/mob/items_lefthand.dmi index 44f8b7ed778..d8d23cf47bf 100644 Binary files a/icons/mob/items_lefthand.dmi and b/icons/mob/items_lefthand.dmi differ diff --git a/icons/mob/items_righthand.dmi b/icons/mob/items_righthand.dmi index 9d3778ef16b..367398d5870 100644 Binary files a/icons/mob/items_righthand.dmi and b/icons/mob/items_righthand.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 74cc49ed4c1..6b72090bf12 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ