From 3acb186b26b5f3a3b1619dea01108890f6a3fb2a Mon Sep 17 00:00:00 2001 From: Doxxmedearly <38594443+Doxxmedearly@users.noreply.github.com> Date: Wed, 30 Jun 2021 18:55:06 -0400 Subject: [PATCH] Removes Wizard + Conflux (#12067) --- .drone.yml | 2 +- .travis.yml | 2 +- aurorastation.dme | 75 ----- code/__defines/gamemode.dm | 1 - code/controllers/subsystems/arrivals.dm | 2 - code/datums/mind.dm | 15 +- code/datums/outfits/outfit_antag.dm | 46 --- code/datums/trading/unique.dm | 3 +- code/defines/obj/weapon.dm | 2 +- code/game/antagonist/outsider/wizard.dm | 149 --------- code/game/antagonist/station/wizard_golem.dm | 14 - code/game/gamemodes/mixed/conflux.dm | 10 - code/game/gamemodes/wizard/wizard.dm | 10 - code/game/machinery/vending_types.dm | 26 -- .../objects/items/weapons/cigs_lighters.dm | 2 +- .../objects/items/weapons/gift_wrappaper.dm | 1 + code/game/objects/items/weapons/scrolls.dm | 114 ------- .../objects/items/weapons/storage/backpack.dm | 12 +- .../objects/items/weapons/storage/bags.dm | 2 +- .../objects/items/weapons/storage/belt.dm | 21 -- code/game/objects/random/random.dm | 21 +- .../modules/cargo/random_stock/t2_uncommon.dm | 3 + code/modules/clothing/chameleon.dm | 101 ------ code/modules/clothing/clothing.dm | 1 + code/modules/clothing/suits/wiz_robe.dm | 31 +- .../spawner/atom/wizard_familiar.dm | 16 - .../spawner/atom/wizardapprentice.dm | 10 - code/modules/item_worth/worths_list.dm | 8 - code/modules/mob/living/carbon/slime/items.dm | 9 +- .../simple_animal/familiars/familiars.dm | 234 ------------- .../living/simple_animal/hostile/faithless.dm | 21 -- .../mob/living/simple_animal/simple_animal.dm | 2 - code/modules/mob/mob_helpers.dm | 6 - code/modules/projectiles/guns/energy/magic.dm | 315 +----------------- code/modules/projectiles/pins.dm | 6 - code/modules/reagents/Chemistry-Recipes.dm | 1 - .../artifacts/armor/wizard_voidsuit.dm | 65 ---- .../artifacts/items/apprentice_pebble.dm | 46 --- .../artifacts/items/lich_phylactery.dm | 7 +- .../artifacts/items/monster_manual.dm | 83 ----- .../artifacts/items/rune_sword.dm | 53 --- .../artifacts/items/scrying_orb.dm | 42 --- .../storage/closets/artifact_closet.dm | 15 - .../artifacts/storage/closets/scrying_S.dm | 8 - .../storage/closets/soul_shards_S.dm | 8 - .../storage/closets/wizard_voidsuit_S.dm | 8 - .../contracts/acadamy/acadamy_contracts.dm | 2 - .../contracts/acadamy/xray_vision.dm | 15 - .../spell_system/contracts/boon/artificer.dm | 4 - .../contracts/boon/boon_contracts.dm | 30 -- .../spell_system/contracts/boon/charge.dm | 4 - .../spell_system/contracts/boon/fireball.dm | 4 - .../spell_system/contracts/boon/force_wall.dm | 5 - .../spell_system/contracts/boon/gestalt.dm | 4 - .../spell_system/contracts/boon/knock.dm | 4 - .../spell_system/contracts/boon/mindswap.dm | 4 - .../spell_system/contracts/boon/smoke.dm | 4 - .../spell_system/contracts/boon/statue.dm | 4 - .../spell_system/contracts/contracts.dm | 41 --- .../contracts/wizard/apprentice.dm | 24 -- .../spell_system/spellbook/spellbook.dm | 256 -------------- .../spellbook/variants/battlemage.dm | 43 --- .../spell_system/spellbook/variants/cleric.dm | 45 --- .../spell_system/spellbook/variants/druid.dm | 42 --- .../spellbook/variants/necromancer.dm | 37 -- .../spellbook/variants/spatial.dm | 30 -- .../spellbook/variants/standard.dm | 40 --- .../spellbook/variants/student.dm | 34 -- code/modules/spell_system/spells/hand/hand.dm | 33 -- .../spell_system/spells/hand/hand_item.dm | 56 ---- .../modules/spell_system/spells/spell_code.dm | 7 +- .../spells/spell_list/others/area/blind.dm | 31 -- .../spell_list/others/area/disable_tech.dm | 1 - .../spells/spell_list/others/area/smoke.dm | 2 +- .../others/contracts/contract_spells.dm | 31 -- .../spell_list/others/contracts/punish.dm | 16 - .../spell_list/others/contracts/reward.dm | 17 - .../others/generic/baleful_polymorph.dm | 30 -- .../spell_list/others/generic/entangle.dm | 55 --- .../others/generic/flesh_to_stone.dm | 24 -- .../others/generic/heal_target_major.dm | 2 +- .../others/generic/heal_target_sacrifice.dm | 32 -- .../spells/spell_list/others/generic/mend.dm | 2 +- .../others/generic/mind_transfer.dm | 89 ----- .../spell_list/others/generic/mindcontrol.dm | 65 ---- .../spell_list/others/generic/raise_dead.dm | 48 --- .../spell_list/others/generic/resurrection.dm | 62 ---- .../spell_list/others/generic/subjugate.dm | 19 -- .../spell_list/others/projectile/fireball.dm | 40 --- .../others/projectile/magic_missile.dm | 60 ---- .../spell_list/others/projectile/stuncuff.dm | 48 --- .../spell_list/self/conjure/druidic_spells.dm | 83 +---- .../spell_list/self/conjure/forcewall.dm | 21 +- .../spell_list/self/conjure/gestalt_grove.dm | 16 - .../spells/spell_list/self/conjure/golem.dm | 12 - .../spells/spell_list/self/conjure/grove.dm | 30 -- .../self/conjure/plant_sanctuary.dm | 44 --- .../spell_list/self/conjure/radiant_aura.dm | 1 - .../spell_list/self/conjure/summon_carp.dm | 22 -- .../self/conjure/summon_demon_creature.dm | 15 - .../self/conjure/summon_harmless_carp.dm | 28 -- .../spell_list/self/equip/holy_relic.dm | 34 -- .../spells/spell_list/self/equip/seed.dm | 21 -- .../spells/spell_list/self/equip/shield.dm | 41 --- .../spell_list/self/generic/area_teleport.dm | 1 - .../spells/spell_list/self/generic/avian.dm | 19 -- .../spell_list/self/generic/corrupt_form.dm | 39 --- .../self/generic/dark_resurrection.dm | 51 --- .../spell_list/self/generic/ethereal_jaunt.dm | 2 +- .../spells/spell_list/self/generic/lichdom.dm | 37 -- .../spell_list/self/generic/mark_recall.dm | 83 ----- .../spells/spell_list/self/generic/mutate.dm | 2 +- .../spell_list/self/generic/no_clothes.dm | 5 - .../spell_list/self/generic/return_master.dm | 29 -- .../spell_list/self/projectile/passage.dm | 47 --- config/example/tips.txt | 3 - .../doxxmedearly - remove_wizard.yml | 11 + icons/obj/wands.dmi | Bin 6801 -> 499 bytes maps/exodus/exodus-2_centcomm.dmm | 9 +- 119 files changed, 63 insertions(+), 3718 deletions(-) delete mode 100644 code/game/antagonist/outsider/wizard.dm delete mode 100644 code/game/antagonist/station/wizard_golem.dm delete mode 100644 code/game/gamemodes/mixed/conflux.dm delete mode 100644 code/game/gamemodes/wizard/wizard.dm delete mode 100644 code/game/objects/items/weapons/scrolls.dm delete mode 100644 code/modules/ghostroles/spawner/atom/wizard_familiar.dm delete mode 100644 code/modules/ghostroles/spawner/atom/wizardapprentice.dm delete mode 100644 code/modules/mob/living/simple_animal/familiars/familiars.dm delete mode 100644 code/modules/spell_system/artifacts/armor/wizard_voidsuit.dm delete mode 100644 code/modules/spell_system/artifacts/items/apprentice_pebble.dm delete mode 100644 code/modules/spell_system/artifacts/items/monster_manual.dm delete mode 100644 code/modules/spell_system/artifacts/items/rune_sword.dm delete mode 100644 code/modules/spell_system/artifacts/items/scrying_orb.dm delete mode 100644 code/modules/spell_system/artifacts/storage/closets/artifact_closet.dm delete mode 100644 code/modules/spell_system/artifacts/storage/closets/scrying_S.dm delete mode 100644 code/modules/spell_system/artifacts/storage/closets/soul_shards_S.dm delete mode 100644 code/modules/spell_system/artifacts/storage/closets/wizard_voidsuit_S.dm delete mode 100644 code/modules/spell_system/contracts/acadamy/acadamy_contracts.dm delete mode 100644 code/modules/spell_system/contracts/acadamy/xray_vision.dm delete mode 100644 code/modules/spell_system/contracts/boon/artificer.dm delete mode 100644 code/modules/spell_system/contracts/boon/boon_contracts.dm delete mode 100644 code/modules/spell_system/contracts/boon/charge.dm delete mode 100644 code/modules/spell_system/contracts/boon/fireball.dm delete mode 100644 code/modules/spell_system/contracts/boon/force_wall.dm delete mode 100644 code/modules/spell_system/contracts/boon/gestalt.dm delete mode 100644 code/modules/spell_system/contracts/boon/knock.dm delete mode 100644 code/modules/spell_system/contracts/boon/mindswap.dm delete mode 100644 code/modules/spell_system/contracts/boon/smoke.dm delete mode 100644 code/modules/spell_system/contracts/boon/statue.dm delete mode 100644 code/modules/spell_system/contracts/contracts.dm delete mode 100644 code/modules/spell_system/contracts/wizard/apprentice.dm delete mode 100644 code/modules/spell_system/spellbook/spellbook.dm delete mode 100644 code/modules/spell_system/spellbook/variants/battlemage.dm delete mode 100644 code/modules/spell_system/spellbook/variants/cleric.dm delete mode 100644 code/modules/spell_system/spellbook/variants/druid.dm delete mode 100644 code/modules/spell_system/spellbook/variants/necromancer.dm delete mode 100644 code/modules/spell_system/spellbook/variants/spatial.dm delete mode 100644 code/modules/spell_system/spellbook/variants/standard.dm delete mode 100644 code/modules/spell_system/spellbook/variants/student.dm delete mode 100644 code/modules/spell_system/spells/hand/hand.dm delete mode 100644 code/modules/spell_system/spells/hand/hand_item.dm delete mode 100644 code/modules/spell_system/spells/spell_list/others/area/blind.dm delete mode 100644 code/modules/spell_system/spells/spell_list/others/contracts/contract_spells.dm delete mode 100644 code/modules/spell_system/spells/spell_list/others/contracts/punish.dm delete mode 100644 code/modules/spell_system/spells/spell_list/others/contracts/reward.dm delete mode 100644 code/modules/spell_system/spells/spell_list/others/generic/baleful_polymorph.dm delete mode 100644 code/modules/spell_system/spells/spell_list/others/generic/entangle.dm delete mode 100644 code/modules/spell_system/spells/spell_list/others/generic/flesh_to_stone.dm delete mode 100644 code/modules/spell_system/spells/spell_list/others/generic/heal_target_sacrifice.dm delete mode 100644 code/modules/spell_system/spells/spell_list/others/generic/mind_transfer.dm delete mode 100644 code/modules/spell_system/spells/spell_list/others/generic/mindcontrol.dm delete mode 100644 code/modules/spell_system/spells/spell_list/others/generic/raise_dead.dm delete mode 100644 code/modules/spell_system/spells/spell_list/others/generic/resurrection.dm delete mode 100644 code/modules/spell_system/spells/spell_list/others/generic/subjugate.dm delete mode 100644 code/modules/spell_system/spells/spell_list/others/projectile/fireball.dm delete mode 100644 code/modules/spell_system/spells/spell_list/others/projectile/magic_missile.dm delete mode 100644 code/modules/spell_system/spells/spell_list/others/projectile/stuncuff.dm delete mode 100644 code/modules/spell_system/spells/spell_list/self/conjure/gestalt_grove.dm delete mode 100644 code/modules/spell_system/spells/spell_list/self/conjure/golem.dm delete mode 100644 code/modules/spell_system/spells/spell_list/self/conjure/grove.dm delete mode 100644 code/modules/spell_system/spells/spell_list/self/conjure/plant_sanctuary.dm delete mode 100644 code/modules/spell_system/spells/spell_list/self/conjure/summon_carp.dm delete mode 100644 code/modules/spell_system/spells/spell_list/self/conjure/summon_demon_creature.dm delete mode 100644 code/modules/spell_system/spells/spell_list/self/conjure/summon_harmless_carp.dm delete mode 100644 code/modules/spell_system/spells/spell_list/self/equip/holy_relic.dm delete mode 100644 code/modules/spell_system/spells/spell_list/self/equip/seed.dm delete mode 100644 code/modules/spell_system/spells/spell_list/self/equip/shield.dm delete mode 100644 code/modules/spell_system/spells/spell_list/self/generic/avian.dm delete mode 100644 code/modules/spell_system/spells/spell_list/self/generic/corrupt_form.dm delete mode 100644 code/modules/spell_system/spells/spell_list/self/generic/dark_resurrection.dm delete mode 100644 code/modules/spell_system/spells/spell_list/self/generic/lichdom.dm delete mode 100644 code/modules/spell_system/spells/spell_list/self/generic/mark_recall.dm delete mode 100644 code/modules/spell_system/spells/spell_list/self/generic/no_clothes.dm delete mode 100644 code/modules/spell_system/spells/spell_list/self/generic/return_master.dm delete mode 100644 code/modules/spell_system/spells/spell_list/self/projectile/passage.dm create mode 100644 html/changelogs/doxxmedearly - remove_wizard.yml diff --git a/.drone.yml b/.drone.yml index 7c2dfb7def5..74f631158fe 100644 --- a/.drone.yml +++ b/.drone.yml @@ -9,7 +9,7 @@ clone: environment: MACRO_COUNT: 0 GENDER_COUNT: 6 - TO_WORLD_COUNT: 208 + TO_WORLD_COUNT: 207 trigger: branch: diff --git a/.travis.yml b/.travis.yml index 3e7823d2263..cdf03faded3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,7 @@ env: BYOND_MINOR="1517" MACRO_COUNT=0 GENDER_COUNT=6 - TO_WORLD_COUNT=208 + TO_WORLD_COUNT=207 FLYWAY_BUILD="5.2.4" NODE_VERSION=10 RUST_G_VERSION="0.4.2+a2" diff --git a/aurorastation.dme b/aurorastation.dme index 29ba256c51d..68e11b19bc1 100644 --- a/aurorastation.dme +++ b/aurorastation.dme @@ -443,7 +443,6 @@ #include "code\game\antagonist\outsider\raider_techno.dm" #include "code\game\antagonist\outsider\revenant.dm" #include "code\game\antagonist\outsider\technomancer.dm" -#include "code\game\antagonist\outsider\wizard.dm" #include "code\game\antagonist\station\cultist.dm" #include "code\game\antagonist\station\highlander.dm" #include "code\game\antagonist\station\loyalist.dm" @@ -453,7 +452,6 @@ #include "code\game\antagonist\station\thrall.dm" #include "code\game\antagonist\station\traitor.dm" #include "code\game\antagonist\station\vampire.dm" -#include "code\game\antagonist\station\wizard_golem.dm" #include "code\game\antagonist\station\changeling\changeling.dm" #include "code\game\antagonist\station\changeling\morph.dm" #include "code\game\area\ai_monitored.dm" @@ -561,7 +559,6 @@ #include "code\game\gamemodes\mixed\acolytes.dm" #include "code\game\gamemodes\mixed\bughunt.dm" #include "code\game\gamemodes\mixed\conflict.dm" -#include "code\game\gamemodes\mixed\conflux.dm" #include "code\game\gamemodes\mixed\crossfire.dm" #include "code\game\gamemodes\mixed\feeding.dm" #include "code\game\gamemodes\mixed\incursion.dm" @@ -652,7 +649,6 @@ #include "code\game\gamemodes\vampire\vampire_datum.dm" #include "code\game\gamemodes\vampire\vampire_helpers.dm" #include "code\game\gamemodes\vampire\vampire_powers.dm" -#include "code\game\gamemodes\wizard\wizard.dm" #include "code\game\jobs\_access_defs.dm" #include "code\game\jobs\access.dm" #include "code\game\jobs\access_datum.dm" @@ -989,7 +985,6 @@ #include "code\game\objects\items\weapons\power_cells.dm" #include "code\game\objects\items\weapons\research_slip.dm" #include "code\game\objects\items\weapons\RFD.dm" -#include "code\game\objects\items\weapons\scrolls.dm" #include "code\game\objects\items\weapons\shields.dm" #include "code\game\objects\items\weapons\soap.dm" #include "code\game\objects\items\weapons\stunbaton.dm" @@ -1752,8 +1747,6 @@ #include "code\modules\ghostroles\spawner\atom\skeleton.dm" #include "code\modules\ghostroles\spawner\atom\syndicate_cyborg.dm" #include "code\modules\ghostroles\spawner\atom\technomancer_apprentice.dm" -#include "code\modules\ghostroles\spawner\atom\wizard_familiar.dm" -#include "code\modules\ghostroles\spawner\atom\wizardapprentice.dm" #include "code\modules\ghostroles\spawner\human\emergencypod.dm" #include "code\modules\ghostroles\spawner\human\human.dm" #include "code\modules\ghostroles\spawner\human\kataphract.dm" @@ -2250,7 +2243,6 @@ #include "code\modules\mob\living\simple_animal\constructs\constructs\harvester.dm" #include "code\modules\mob\living\simple_animal\constructs\constructs\juggernaut.dm" #include "code\modules\mob\living\simple_animal\constructs\constructs\wraith.dm" -#include "code\modules\mob\living\simple_animal\familiars\familiars.dm" #include "code\modules\mob\living\simple_animal\friendly\adhomai.dm" #include "code\modules\mob\living\simple_animal\friendly\carp.dm" #include "code\modules\mob\living\simple_animal\friendly\cat.dm" @@ -2830,46 +2822,13 @@ #include "code\modules\shuttles\shuttle_supply.dm" #include "code\modules\shuttles\shuttles_multi.dm" #include "code\modules\spell_system\artifacts\armor\bone_armor.dm" -#include "code\modules\spell_system\artifacts\armor\wizard_voidsuit.dm" -#include "code\modules\spell_system\artifacts\items\apprentice_pebble.dm" #include "code\modules\spell_system\artifacts\items\bone_spear.dm" #include "code\modules\spell_system\artifacts\items\lich_phylactery.dm" -#include "code\modules\spell_system\artifacts\items\monster_manual.dm" #include "code\modules\spell_system\artifacts\items\poppet.dm" -#include "code\modules\spell_system\artifacts\items\rune_sword.dm" -#include "code\modules\spell_system\artifacts\items\scrying_orb.dm" -#include "code\modules\spell_system\artifacts\storage\closets\artifact_closet.dm" -#include "code\modules\spell_system\artifacts\storage\closets\scrying_S.dm" -#include "code\modules\spell_system\artifacts\storage\closets\soul_shards_S.dm" -#include "code\modules\spell_system\artifacts\storage\closets\wizard_voidsuit_S.dm" -#include "code\modules\spell_system\contracts\contracts.dm" -#include "code\modules\spell_system\contracts\acadamy\acadamy_contracts.dm" -#include "code\modules\spell_system\contracts\acadamy\xray_vision.dm" -#include "code\modules\spell_system\contracts\boon\artificer.dm" -#include "code\modules\spell_system\contracts\boon\boon_contracts.dm" -#include "code\modules\spell_system\contracts\boon\charge.dm" -#include "code\modules\spell_system\contracts\boon\fireball.dm" -#include "code\modules\spell_system\contracts\boon\force_wall.dm" -#include "code\modules\spell_system\contracts\boon\gestalt.dm" -#include "code\modules\spell_system\contracts\boon\knock.dm" -#include "code\modules\spell_system\contracts\boon\mindswap.dm" -#include "code\modules\spell_system\contracts\boon\smoke.dm" -#include "code\modules\spell_system\contracts\boon\statue.dm" -#include "code\modules\spell_system\contracts\wizard\apprentice.dm" -#include "code\modules\spell_system\spellbook\spellbook.dm" -#include "code\modules\spell_system\spellbook\variants\battlemage.dm" -#include "code\modules\spell_system\spellbook\variants\cleric.dm" -#include "code\modules\spell_system\spellbook\variants\druid.dm" -#include "code\modules\spell_system\spellbook\variants\necromancer.dm" -#include "code\modules\spell_system\spellbook\variants\spatial.dm" -#include "code\modules\spell_system\spellbook\variants\standard.dm" -#include "code\modules\spell_system\spellbook\variants\student.dm" #include "code\modules\spell_system\spells\spell_code.dm" #include "code\modules\spell_system\spells\spell_projectile.dm" #include "code\modules\spell_system\spells\spell_verb.dm" #include "code\modules\spell_system\spells\spells.dm" -#include "code\modules\spell_system\spells\hand\hand.dm" -#include "code\modules\spell_system\spells\hand\hand_item.dm" #include "code\modules\spell_system\spells\spell_list\aoe_turf.dm" #include "code\modules\spell_system\spells\spell_list\conjure.dm" #include "code\modules\spell_system\spells\spell_list\construct_spells.dm" @@ -2879,47 +2838,24 @@ #include "code\modules\spell_system\spells\spell_list\projectile.dm" #include "code\modules\spell_system\spells\spell_list\shapeshift.dm" #include "code\modules\spell_system\spells\spell_list\targeted_spells.dm" -#include "code\modules\spell_system\spells\spell_list\others\area\blind.dm" #include "code\modules\spell_system\spells\spell_list\others\area\disable_tech.dm" #include "code\modules\spell_system\spells\spell_list\others\area\knock.dm" #include "code\modules\spell_system\spells\spell_list\others\area\smoke.dm" #include "code\modules\spell_system\spells\spell_list\others\area\torment.dm" -#include "code\modules\spell_system\spells\spell_list\others\contracts\contract_spells.dm" -#include "code\modules\spell_system\spells\spell_list\others\contracts\punish.dm" -#include "code\modules\spell_system\spells\spell_list\others\contracts\reward.dm" #include "code\modules\spell_system\spells\spell_list\others\equip\party_hardy.dm" -#include "code\modules\spell_system\spells\spell_list\others\generic\baleful_polymorph.dm" -#include "code\modules\spell_system\spells\spell_list\others\generic\entangle.dm" -#include "code\modules\spell_system\spells\spell_list\others\generic\flesh_to_stone.dm" #include "code\modules\spell_system\spells\spell_list\others\generic\harvest.dm" #include "code\modules\spell_system\spells\spell_list\others\generic\heal_target.dm" #include "code\modules\spell_system\spells\spell_list\others\generic\heal_target_area.dm" #include "code\modules\spell_system\spells\spell_list\others\generic\heal_target_major.dm" -#include "code\modules\spell_system\spells\spell_list\others\generic\heal_target_sacrifice.dm" #include "code\modules\spell_system\spells\spell_list\others\generic\life_steal.dm" #include "code\modules\spell_system\spells\spell_list\others\generic\mend.dm" -#include "code\modules\spell_system\spells\spell_list\others\generic\mind_transfer.dm" -#include "code\modules\spell_system\spells\spell_list\others\generic\mindcontrol.dm" -#include "code\modules\spell_system\spells\spell_list\others\generic\raise_dead.dm" -#include "code\modules\spell_system\spells\spell_list\others\generic\resurrection.dm" -#include "code\modules\spell_system\spells\spell_list\others\generic\subjugate.dm" #include "code\modules\spell_system\spells\spell_list\others\generic\swap.dm" -#include "code\modules\spell_system\spells\spell_list\others\projectile\fireball.dm" -#include "code\modules\spell_system\spells\spell_list\others\projectile\magic_missile.dm" -#include "code\modules\spell_system\spells\spell_list\others\projectile\stuncuff.dm" #include "code\modules\spell_system\spells\spell_list\self\area\blink.dm" #include "code\modules\spell_system\spells\spell_list\self\area\charge.dm" #include "code\modules\spell_system\spells\spell_list\self\conjure\druidic_spells.dm" #include "code\modules\spell_system\spells\spell_list\self\conjure\forcewall.dm" -#include "code\modules\spell_system\spells\spell_list\self\conjure\gestalt_grove.dm" -#include "code\modules\spell_system\spells\spell_list\self\conjure\golem.dm" -#include "code\modules\spell_system\spells\spell_list\self\conjure\grove.dm" -#include "code\modules\spell_system\spells\spell_list\self\conjure\plant_sanctuary.dm" #include "code\modules\spell_system\spells\spell_list\self\conjure\radiant_aura.dm" -#include "code\modules\spell_system\spells\spell_list\self\conjure\summon_carp.dm" -#include "code\modules\spell_system\spells\spell_list\self\conjure\summon_demon_creature.dm" #include "code\modules\spell_system\spells\spell_list\self\conjure\summon_ed_swarm.dm" -#include "code\modules\spell_system\spells\spell_list\self\conjure\summon_harmless_carp.dm" #include "code\modules\spell_system\spells\spell_list\self\conjure\construct_spells\construct_shell.dm" #include "code\modules\spell_system\spells\spell_list\self\conjure\construct_spells\create_altar.dm" #include "code\modules\spell_system\spells\spell_list\self\conjure\construct_spells\create_floor.dm" @@ -2931,23 +2867,12 @@ #include "code\modules\spell_system\spells\spell_list\self\conjure\construct_spells\summon_soulstone.dm" #include "code\modules\spell_system\spells\spell_list\self\conjure\morph_spells\create_nest.dm" #include "code\modules\spell_system\spells\spell_list\self\conjure\morph_spells\create_node.dm" -#include "code\modules\spell_system\spells\spell_list\self\equip\holy_relic.dm" -#include "code\modules\spell_system\spells\spell_list\self\equip\seed.dm" -#include "code\modules\spell_system\spells\spell_list\self\equip\shield.dm" #include "code\modules\spell_system\spells\spell_list\self\generic\area_teleport.dm" -#include "code\modules\spell_system\spells\spell_list\self\generic\avian.dm" -#include "code\modules\spell_system\spells\spell_list\self\generic\corrupt_form.dm" -#include "code\modules\spell_system\spells\spell_list\self\generic\dark_resurrection.dm" #include "code\modules\spell_system\spells\spell_list\self\generic\ethereal_jaunt.dm" -#include "code\modules\spell_system\spells\spell_list\self\generic\lichdom.dm" -#include "code\modules\spell_system\spells\spell_list\self\generic\mark_recall.dm" #include "code\modules\spell_system\spells\spell_list\self\generic\mutate.dm" -#include "code\modules\spell_system\spells\spell_list\self\generic\no_clothes.dm" -#include "code\modules\spell_system\spells\spell_list\self\generic\return_master.dm" #include "code\modules\spell_system\spells\spell_list\self\generic\rune_write.dm" #include "code\modules\spell_system\spells\spell_list\self\generic\shadow_shroud.dm" #include "code\modules\spell_system\spells\spell_list\self\generic\shift.dm" -#include "code\modules\spell_system\spells\spell_list\self\projectile\passage.dm" #include "code\modules\supermatter\setup_supermatter.dm" #include "code\modules\supermatter\supermatter.dm" #include "code\modules\surgery\_defines.dm" diff --git a/code/__defines/gamemode.dm b/code/__defines/gamemode.dm index a30c78b07be..1fcfbe46a2b 100644 --- a/code/__defines/gamemode.dm +++ b/code/__defines/gamemode.dm @@ -48,7 +48,6 @@ #define MODE_RAIDER "raider" #define MODE_BURGLAR "burglar" #define MODE_LONER "loner" -#define MODE_WIZARD "wizard" #define MODE_TECHNOMANCER "technomancer" #define MODE_CHANGELING "changeling" #define MODE_MORPH "morph" diff --git a/code/controllers/subsystems/arrivals.dm b/code/controllers/subsystems/arrivals.dm index 0285a511c05..cd3ed8b9449 100644 --- a/code/controllers/subsystems/arrivals.dm +++ b/code/controllers/subsystems/arrivals.dm @@ -66,8 +66,6 @@ return 1 if(istype(A,/obj/item/phylactery)) return 1 - if(istype(A,/obj/effect/decal/wizard_mark)) - return 1 for(var/i=1, i<=A.contents.len, i++) var/atom/B = A.contents[i] diff --git a/code/datums/mind.dm b/code/datums/mind.dm index b4177846b19..5bac923654f 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -77,7 +77,6 @@ /datum/mind/proc/handle_mob_deletion(mob/living/deleted_mob) if (current == deleted_mob) - current.spellremove() current = null if (original == deleted_mob) @@ -579,16 +578,4 @@ /mob/living/silicon/robot/syndicate/mind_initialize() ..() mind.assigned_role = "Syndicate Robot" - mind.special_role = "Mercenary" - -/mob/living/simple_animal/hostile/faithless/wizard/mind_initialize() - ..() - mind.assigned_role = "Space Wizard" - -/mob/living/simple_animal/familiar/mind_initialize() - ..() - mind.assigned_role = "Familiar" - -/mob/living/simple_animal/rat/familiar/familiar/mind_initialize() - ..() - mind.assigned_role = "Familiar" + mind.special_role = "Mercenary" \ No newline at end of file diff --git a/code/datums/outfits/outfit_antag.dm b/code/datums/outfits/outfit_antag.dm index 74c013627b4..a0534449b2e 100644 --- a/code/datums/outfits/outfit_antag.dm +++ b/code/datums/outfits/outfit_antag.dm @@ -496,52 +496,6 @@ W.name = "[H.real_name]'s ID" W.registered_name = H.real_name -/datum/outfit/admin/wizard - name = "Space Wizard" - allow_backbag_choice = FALSE - - uniform = /obj/item/clothing/under/chameleon/wizard - back = /obj/item/storage/backpack/chameleon/wizard - suit = /obj/item/clothing/suit/chameleon/wizard - head = /obj/item/clothing/head/chameleon/wizard - shoes = /obj/item/clothing/shoes/chameleon/wizard - l_ear = /obj/item/device/radio/headset/bluespace - r_pocket = /obj/item/teleportation_scroll - l_hand = /obj/item/spellbook - id = /obj/item/card/id/bluespace - - backpack_contents = list( - /obj/item/storage/box = 1 - ) - -/datum/outfit/admin/wizard/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) - . = ..() - if(visualsOnly) - return - - var/obj/item/card/id/W = H.wear_id - if(W) - W.registered_name = H.real_name - -/datum/outfit/admin/wizard/apprentice - name = "Space Wizard Apprentice" - l_hand = null - r_pocket = null - -/datum/outfit/admin/wizard/skeleton - name = "Skeleton Warrior" - allow_backbag_choice = FALSE - - uniform = /obj/item/clothing/under/gladiator - back = /obj/item/material/twohanded/spear/bone - suit = /obj/item/clothing/suit/armor/bone - head = /obj/item/clothing/head/helmet/bone - l_ear = null - r_pocket = null - l_hand = null - - backpack_contents = null - /datum/outfit/admin/syndicate/cultist name = "Cultist" allow_backbag_choice = FALSE diff --git a/code/datums/trading/unique.dm b/code/datums/trading/unique.dm index eb628e80e03..ecb63b66b0d 100644 --- a/code/datums/trading/unique.dm +++ b/code/datums/trading/unique.dm @@ -196,8 +196,7 @@ /obj/item/circuitboard/telesci_pad = TRADER_THIS_TYPE, /obj/item/phylactery = TRADER_THIS_TYPE, /obj/item/blueprints = TRADER_THIS_TYPE, - /obj/item/storage/backpack/holding = TRADER_THIS_TYPE, - /obj/item/teleportation_scroll = TRADER_THIS_TYPE + /obj/item/storage/backpack/holding = TRADER_THIS_TYPE ) possible_trading_items = list( diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index cc31ada747b..68cd1ba5873 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -393,7 +393,7 @@ /obj/item/staff name = "wizards staff" - desc = "Apparently a staff used by the wizard." + desc = "A staff which only has the power to make you look like a nerd." icon = 'icons/obj/wizard.dmi' icon_state = "staff" force = 3.0 diff --git a/code/game/antagonist/outsider/wizard.dm b/code/game/antagonist/outsider/wizard.dm deleted file mode 100644 index b338576a216..00000000000 --- a/code/game/antagonist/outsider/wizard.dm +++ /dev/null @@ -1,149 +0,0 @@ -var/datum/antagonist/wizard/wizards - -/datum/antagonist/wizard - id = MODE_WIZARD - role_text = "Space Wizard" - role_text_plural = "Space Wizards" - bantype = "wizard" - landmark_id = "wizard" - welcome_text = "You will find a list of available spells in your spell book. Choose your magic arsenal carefully.
In your pockets you will find a teleport scroll. Use it as needed." - flags = ANTAG_OVERRIDE_JOB | ANTAG_CLEAR_EQUIPMENT | ANTAG_CHOOSE_NAME | ANTAG_VOTABLE | ANTAG_SET_APPEARANCE | ANTAG_NO_FLAVORTEXT - antaghud_indicator = "hudwizard" - required_age = 10 - - hard_cap = 1 - hard_cap_round = 3 - initial_spawn_req = 1 - initial_spawn_target = 1 - - faction = "Space Wizard" - -/datum/antagonist/wizard/New() - ..() - wizards = src - -/datum/antagonist/wizard/create_objectives(var/datum/mind/wizard) - - if(!..()) - return - - var/kill - var/escape - var/steal - var/hijack - - switch(rand(1,100)) - if(1 to 30) - escape = 1 - kill = 1 - if(31 to 60) - escape = 1 - steal = 1 - if(61 to 99) - kill = 1 - steal = 1 - else - hijack = 1 - - if(kill) - var/datum/objective/assassinate/kill_objective = new - kill_objective.owner = wizard - kill_objective.find_target() - wizard.objectives |= kill_objective - if(steal) - var/datum/objective/steal/steal_objective = new - steal_objective.owner = wizard - steal_objective.find_target() - wizard.objectives |= steal_objective - if(escape) - var/datum/objective/survive/survive_objective = new - survive_objective.owner = wizard - wizard.objectives |= survive_objective - if(hijack) - var/datum/objective/hijack/hijack_objective = new - hijack_objective.owner = wizard - wizard.objectives |= hijack_objective - return - -/datum/antagonist/wizard/update_antag_mob(var/datum/mind/wizard) - ..() - wizard.store_memory("Remember: do not forget to prepare your spells.") - -/datum/antagonist/wizard/set_antag_name(mob/living/player) - player.real_name = "[pick(wizard_first)] [pick(wizard_second)]" - player.name = player.real_name - var/newname = sanitize(input(player, "You are a [role_text]. Would you like to change your name to something else?", "Name change") as null|text, MAX_NAME_LEN) - if(newname) - player.real_name = newname - player.name = player.real_name - player.dna.real_name = newname - if(player.mind) - player.mind.name = player.name - // Update any ID cards. - update_access(player) - -/datum/antagonist/wizard/equip(var/mob/living/carbon/human/player) - - if(!..()) - return FALSE - - for (var/obj/item/I in player) - if (istype(I, /obj/item/implant)) - continue - player.drop_from_inventory(I) - if(I.loc != player) - qdel(I) - - player.preEquipOutfit(/datum/outfit/admin/wizard, FALSE) - player.equipOutfit(/datum/outfit/admin/wizard, FALSE) - if(player.wear_id) - id_card = player.wear_id - player.force_update_limbs() - player.update_eyes() - player.regenerate_icons() - -/datum/antagonist/wizard/set_antag_name(var/mob/living/player) - ..() - if(id_card) - addtimer(CALLBACK(player, /mob/.proc/set_id_info, id_card), 1 SECOND) - -/datum/antagonist/wizard/check_victory() - var/survivor - for(var/datum/mind/player in current_antagonists) - if(!player.current || player.current.stat) - continue - survivor = 1 - break - if(!survivor) - feedback_set_details("round_end_result","loss - wizard killed") - to_world("The [(current_antagonists.len>1)?"[role_text_plural] have":"[role_text] has"] been killed by the crew! The Space Wizards Federation has been taught a lesson they will not soon forget!") - - -//To batch-remove wizard spells. Linked to mind.dm. -/mob/proc/spellremove() - for(var/spell/spell_to_remove in src.spell_list) - remove_spell(spell_to_remove) - -obj/item/clothing - var/wizard_garb = 0 - var/no_overheat = FALSE // Checks to see if the clothing is ignored for the purpose of overheating messages. - -// Does this clothing slot count as wizard garb? (Combines a few checks) -/proc/is_wiz_garb(var/obj/item/clothing/C) - return C && C.wizard_garb - -/*Checks if the wizard is wearing the proper attire. -Made a proc so this is not repeated 14 (or more) times.*/ -/mob/proc/wearing_wiz_garb() - to_chat(src, "Silly creature, you're not a human. Only humans can cast this spell.") - return 0 - -// Humans can wear clothes. -/mob/living/carbon/human/wearing_wiz_garb() - if(!is_wiz_garb(src.wear_suit) && (!src.species.hud || (slot_wear_suit in src.species.hud.equip_slots))) - to_chat(src, "I don't feel strong enough without my robes.") - return 0 - if(!is_wiz_garb(src.head) && (!species.hud || (slot_head in src.species.hud.equip_slots))) - to_chat(src, "I don't feel strong enough without my headwear.") - return 0 - return 1 diff --git a/code/game/antagonist/station/wizard_golem.dm b/code/game/antagonist/station/wizard_golem.dm deleted file mode 100644 index 41860f32354..00000000000 --- a/code/game/antagonist/station/wizard_golem.dm +++ /dev/null @@ -1,14 +0,0 @@ -var/datum/antagonist/wizard_golem/wizard_golems = null - -/datum/antagonist/wizard_golem - id = MODE_GOLEM - role_text = "Golem" - role_text_plural = "Golems" - welcome_text = "You are a golem summoned by a powerful mage. Serve your master, and assist them in completing their goals at any cost." - antaghud_indicator = "hudmagineer" - flags = ANTAG_NO_ROUNDSTART_SPAWN - -/datum/antagonist/wizard_golem/New() - ..() - - wizard_golems = src \ No newline at end of file diff --git a/code/game/gamemodes/mixed/conflux.dm b/code/game/gamemodes/mixed/conflux.dm deleted file mode 100644 index 8331e90338d..00000000000 --- a/code/game/gamemodes/mixed/conflux.dm +++ /dev/null @@ -1,10 +0,0 @@ -/datum/game_mode/conflux - name = "Conflux (Wiz+Cult)" - round_description = "A space wizard and a cult have invaded the station!" - extended_round_description = "Cultists and wizards spawn during this round." - config_tag = "conflux" - required_players = 15 - required_enemies = 5 - end_on_antag_death = 0 - antag_tags = list(MODE_WIZARD, MODE_CULTIST) - require_all_templates = 1 diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm deleted file mode 100644 index ed85f696d43..00000000000 --- a/code/game/gamemodes/wizard/wizard.dm +++ /dev/null @@ -1,10 +0,0 @@ -/datum/game_mode/wizard - name = "Wizard" - round_description = "There is a SPACE WIZARD on the station. You can't let the magician achieve their objectives!" - extended_round_description = "A powerful entity capable of manipulating the elements around him, most commonly referred to as a 'wizard', has infiltrated the station. They have a wide variety of powers and spells available to them that makes your own simple moral self tremble with fear and excitement. Ultimately, their purpose is unknown. However, it is up to you and your crew to decide if their powers can be used for good or if their arrival foreshadows the destruction of the entire station." - config_tag = "wizard" - required_players = 3 - max_players = 20 - required_enemies = 1 - end_on_antag_death = 1 - antag_tags = list(MODE_WIZARD) diff --git a/code/game/machinery/vending_types.dm b/code/game/machinery/vending_types.dm index 899d26f2259..89b69a0b154 100644 --- a/code/game/machinery/vending_types.dm +++ b/code/game/machinery/vending_types.dm @@ -801,32 +801,6 @@ src.product_records.Add(product) -/obj/machinery/vending/magivend - name = "MagiVend" - desc = "A magic vending machine." - icon_state = "magivend" - product_slogans = "Sling spells the proper way with MagiVend!;Be your own Houdini! Use MagiVend!" - vend_delay = 15 - vend_reply = "Have an enchanted evening!" - product_ads = "FJKLFJSD;AJKFLBJAKL;1234 LOONIES LOL!;>MFW;Kill them fuckers!;GET DAT FUKKEN DISK;HONK!;EI NATH;Destroy the station!;Admin conspiracies since forever!;Space-time bending hardware!" //What the fuck is this - vend_id = "magic" - products = list( - /obj/item/clothing/head/wizard = 1, - /obj/item/clothing/suit/wizrobe = 1, - /obj/item/clothing/shoes/sandal = 1, - /obj/item/staff = 1 - ) - contraband = list( - /obj/item/clothing/head/wizard/red = 1, - /obj/item/clothing/suit/wizrobe/red = 1, - ) - premium = list( - /obj/item/clothing/head/wizard/fake = 1 - ) - restock_items = 1 - random_itemcount = 0 - light_color = COLOR_BABY_BLUE - /obj/machinery/vending/dinnerware name = "Dinnerware" desc = "A kitchen and restaurant equipment vendor." diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index 96c63916a73..95040ed17c6 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -1029,7 +1029,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM ..() /obj/item/reagent_containers/food/snacks/grown/attackby(obj/item/I, mob/user) - if(is_type_in_list(I, list(/obj/item/paper/cig/, /obj/item/paper/, /obj/item/teleportation_scroll))) + if(is_type_in_list(I, list(/obj/item/paper/cig/, /obj/item/paper/))) if(!dry) to_chat(user, SPAN_WARNING("You need to dry [src] first!")) return diff --git a/code/game/objects/items/weapons/gift_wrappaper.dm b/code/game/objects/items/weapons/gift_wrappaper.dm index fdd183f5bd1..0db5c196601 100644 --- a/code/game/objects/items/weapons/gift_wrappaper.dm +++ b/code/game/objects/items/weapons/gift_wrappaper.dm @@ -167,6 +167,7 @@ /obj/random/spacecash, /obj/random/glowstick, /obj/random/gloves, + /obj/random/wizard_dressup, /obj/item/storage/wallet, /obj/item/storage/photo_album, /obj/item/storage/box/snappops, diff --git a/code/game/objects/items/weapons/scrolls.dm b/code/game/objects/items/weapons/scrolls.dm deleted file mode 100644 index c8c91657196..00000000000 --- a/code/game/objects/items/weapons/scrolls.dm +++ /dev/null @@ -1,114 +0,0 @@ -/obj/item/teleportation_scroll - name = "scroll of teleportation" - desc = "A scroll for moving around." - icon = 'icons/obj/wizard.dmi' - icon_state = "scroll" - item_state = "scroll" - item_icons = list( - slot_l_hand_str = 'icons/mob/items/lefthand_books.dmi', - slot_r_hand_str = 'icons/mob/items/righthand_books.dmi' - ) - var/uses = 4.0 - w_class = ITEMSIZE_TINY - item_state = "paper" - throw_speed = 4 - throw_range = 20 - origin_tech = list(TECH_BLUESPACE = 4) - -/obj/item/teleportation_scroll/attack_self(mob/living/user as mob) - if(!user.is_wizard()) - if(istype(user, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = user - var/obj/item/organ/O = H.internal_organs_by_name[pick(BP_EYES, BP_APPENDIX, BP_KIDNEYS, BP_LIVER, BP_HEART, BP_LUNGS, BP_BRAIN)] - if(O == null) - to_chat(user, SPAN_NOTICE("You can't make any sense of the arcane glyphs. . . maybe you should try again.")) - else - to_chat(user, SPAN_ALERT("As you stumble over the arcane glyphs, you feel a twisting sensation in [O]!")) - user.visible_message("A flash of smoke pours out of [user]'s orifices!") - playsound(user, 'sound/magic/lightningshock.ogg', 40, 1) - var/datum/effect/effect/system/smoke_spread/smoke = new /datum/effect/effect/system/smoke_spread() - smoke.set_up(5, 0, user.loc) - smoke.attach(user) - smoke.start() - user.show_message("[user] screams!",2) - user.drop_item() - if(O && istype(O)) - O.removed(user) - return - else - user.set_machine(src) - var/dat = "Teleportation Scroll:
" - dat += "Number of uses: [src.uses]
" - dat += "
" - dat += "Four uses use them wisely:
" - dat += "Teleport
" - dat += "Kind regards,
Wizards Federation

P.S. Don't forget to bring your gear, you'll need it to cast most spells.
" - user << browse(dat, "window=scroll") - onclose(user, "scroll") - return - -/obj/item/teleportation_scroll/Topic(href, href_list) - ..() - if (usr.stat || usr.restrained() || src.loc != usr) - return - var/mob/living/carbon/human/H = usr - if (!( istype(H, /mob/living/carbon/human))) - return 1 - if ((usr == src.loc || (in_range(src, usr) && istype(src.loc, /turf)))) - usr.set_machine(src) - if (href_list["spell_teleport"]) - if (src.uses >= 1) - teleportscroll(H) - attack_self(H) - return - -/obj/item/teleportation_scroll/proc/teleportscroll(var/mob/user) - - var/A - - A = input(user, "Area to jump to", "BOOYEA", A) as null|anything in teleportlocs - var/area/thearea = teleportlocs[A] - - if (user.stat || user.restrained()) - return - if(!((user == loc || (in_range(src, user) && istype(src.loc, /turf))))) - return - - var/datum/effect/effect/system/smoke_spread/smoke = new /datum/effect/effect/system/smoke_spread() - smoke.set_up(5, 0, user.loc) - smoke.attach(user) - smoke.start() - var/list/L = list() - for(var/turf/T in get_area_turfs(thearea)) - if(!T.density && !T.is_hole) - var/clear = 1 - for(var/obj/O in T) - if(O.density) - clear = 0 - break - if(clear) - L+=T - - if(!L.len) - to_chat(user, "The spell matrix was unable to locate a suitable teleport destination for an unknown reason. Sorry.") - return - - if(user && user.buckled_to) - user.buckled_to.unbuckle() - - var/list/tempL = L - var/attempt = null - var/success = 0 - while(tempL.len) - attempt = pick(tempL) - success = user.Move(attempt) - if(!success) - tempL.Remove(attempt) - else - break - - if(!success) - user.forceMove(pick(L)) - - smoke.start() - src.uses -= 1 diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index 372e2234d4e..753e95b4f05 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -185,8 +185,8 @@ empty_delay = 0.8 SECOND /obj/item/storage/backpack/wizard - name = "wizard federation sack" - desc = "Perfect for keeping your shining crystal balls inside of." + name = "magical sack" + desc = "Perfect for keeping your shining crystal balls inside of. May not contain actual magic." icon_state = "wizardpack" empty_delay = 0.8 SECOND @@ -293,8 +293,8 @@ empty_delay = 0.8 SECOND /obj/item/storage/backpack/satchel_wizard - name = "wizard federation satchel" - desc = "This stylish satchel will put a spell on anyone with some fashion sense to spare." + name = "magic satchel" + desc = "This stylish satchel will put a spell on anyone with some fashion sense to spare. Contains %0 actual magic." icon_state = "satchel-wizard" empty_delay = 0.8 SECOND @@ -424,8 +424,8 @@ empty_delay = 0.8 SECOND /obj/item/storage/backpack/duffel/wizard - name = "wizardly duffel bag" - desc = "A fancy blue wizard bag, duffel edition." + name = "magical duffel bag" + desc = "A fancy blue spell bag, duffel edition. Comes with zero spells because magic isn't real, nerd." icon_state = "duffel-wizard" slowdown = 0 empty_delay = 0.8 SECOND diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index 172fd6790e3..5dad50d21c6 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -328,7 +328,7 @@ max_storage_space = 200 max_w_class = ITEMSIZE_NORMAL w_class = ITEMSIZE_NORMAL - can_hold = list(/obj/item/book, /obj/item/spellbook) + can_hold = list(/obj/item/book) // ----------------------------- // Chemistry Bag diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index ae8f306eae8..ebdfcb4c9fb 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -384,27 +384,6 @@ /obj/item/gun/energy/mousegun ) -/obj/item/storage/belt/wands - name = "wand belt" - desc = "A belt designed to hold various rods of power." - icon_state = "soulstonebelt" - item_state = "soulstonebelt" - storage_slots = 5 - max_w_class = ITEMSIZE_NORMAL - max_storage_space = 28 - can_hold = list( - /obj/item/gun/energy/wand - ) - -/obj/item/storage/belt/wands/full - starts_with = list( - /obj/item/gun/energy/wand/fire = 1, - /obj/item/gun/energy/wand/polymorph = 1, - /obj/item/gun/energy/wand/teleport = 1, - /obj/item/gun/energy/wand/force = 1, - /obj/item/gun/energy/wand/animation = 1 - ) - /obj/item/storage/belt/mining name = "explorer's belt" desc = "A versatile chest rig, cherished by miners and hunters alike." diff --git a/code/game/objects/random/random.dm b/code/game/objects/random/random.dm index 9ff19d18af7..3973cdea8b7 100644 --- a/code/game/objects/random/random.dm +++ b/code/game/objects/random/random.dm @@ -578,7 +578,6 @@ /obj/machinery/vending/security = 0.3, /obj/machinery/vending/hydronutrients = 1, /obj/machinery/vending/hydroseeds = 1, - /obj/machinery/vending/magivend = 0.5, //The things it dispenses are just costumes to non-wizards /obj/machinery/vending/dinnerware = 1, /obj/machinery/vending/sovietsoda = 2, /obj/machinery/vending/tool = 1, @@ -942,7 +941,8 @@ /obj/random/tool = 1, /obj/random/toolbox = 1, /obj/random_produce = 0.25, - /obj/random/watches = 1 + /obj/random/watches = 1, + /obj/random/wizard_dressup = 0.25 ) @@ -1775,4 +1775,19 @@ /obj/item/seeds/peanutseed, /obj/item/seeds/soyaseed, /obj/item/seeds/cabbageseed - ) \ No newline at end of file + ) + +/obj/random/wizard_dressup + name = "random wizard clothes" + desc = "This is a random piece of fake wizard clothing." + icon = 'icons/obj/wizard.dmi' + icon_state = "staff" + has_postspawn = TRUE + +/obj/random/wizard_dressup/spawn_item() + var/obj/item/clothing/suit/wizrobe/W = pick(typesof(/obj/item/clothing/suit/wizrobe)) + . = new W(loc) + +/obj/random/wizard_dressup/post_spawn(obj/thing) + var/obj/item/clothing/head/wizard/H = pick(typesof(/obj/item/clothing/head/wizard)) + new H(loc) diff --git a/code/modules/cargo/random_stock/t2_uncommon.dm b/code/modules/cargo/random_stock/t2_uncommon.dm index 7bf5daada68..625f113efa3 100644 --- a/code/modules/cargo/random_stock/t2_uncommon.dm +++ b/code/modules/cargo/random_stock/t2_uncommon.dm @@ -399,5 +399,8 @@ STOCK_ITEM_UNCOMMON(gumballs, 3) STOCK_ITEM_UNCOMMON(googly, 0.75) new /obj/item/storage/box/googly(L) +STOCK_ITEM_UNCOMMON(wizarddressup, 1) + new /obj/random/wizard_dressup(L) + STOCK_ITEM_UNCOMMON(nothing, 0) // no-op diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm index 22929dbb495..30b01be9393 100644 --- a/code/modules/clothing/chameleon.dm +++ b/code/modules/clothing/chameleon.dm @@ -80,25 +80,6 @@ disguise(clothing_choices[picked]) update_clothing_icon() //so our overlays update. -/obj/item/clothing/under/chameleon/wizard/Initialize() - . = ..() - disguise(/obj/item/clothing/under/lightpurple) - -/obj/item/clothing/under/chameleon/wizard/change(picked in clothing_choices) - set name = "Change Jumpsuit Appearance" - set category = "Chameleon Items" - set src in usr - - if(isliving(usr)) - var/mob/living/user = usr - if(user.is_wizard()) - ..(picked) - return - to_chat(usr, SPAN_WARNING("You touch \the [src], but nothing happens.")) - -/obj/item/clothing/under/chameleon/wizard/emp_act() - return - //***************** //**Chameleon Hat** //***************** @@ -136,28 +117,6 @@ disguise(clothing_choices[picked]) update_clothing_icon() //so our overlays update. -/obj/item/clothing/head/chameleon/wizard - wizard_garb = TRUE - -/obj/item/clothing/head/chameleon/wizard/Initialize() - . = ..() - disguise(/obj/item/clothing/head/wizard) - -/obj/item/clothing/head/chameleon/wizard/change(picked in clothing_choices) - set name = "Change Hat/Helmet Appearance" - set category = "Chameleon Items" - set src in usr - - if(isliving(usr)) - var/mob/living/user = usr - if(user.is_wizard()) - ..(picked) - return - to_chat(usr, SPAN_WARNING("You touch \the [src], but nothing happens.")) - -/obj/item/clothing/head/chameleon/wizard/emp_act() - return - //****************** //**Chameleon Suit** //****************** @@ -195,28 +154,6 @@ update_clothing_icon() //so our overlays update. -/obj/item/clothing/suit/chameleon/wizard - wizard_garb = TRUE - -/obj/item/clothing/suit/chameleon/wizard/Initialize() - . = ..() - disguise(/obj/item/clothing/suit/wizrobe) - -/obj/item/clothing/suit/chameleon/wizard/change(picked in clothing_choices) - set name = "Change Oversuit Appearance" - set category = "Chameleon Items" - set src in usr - - if(isliving(usr)) - var/mob/living/user = usr - if(user.is_wizard()) - ..(picked) - return - to_chat(usr, SPAN_WARNING("You touch \the [src], but nothing happens.")) - -/obj/item/clothing/suit/chameleon/wizard/emp_act() - return - //******************* //**Chameleon Shoes** //******************* @@ -255,25 +192,6 @@ update_clothing_icon() //so our overlays update. -/obj/item/clothing/shoes/chameleon/wizard/Initialize() - . = ..() - disguise(/obj/item/clothing/shoes/sandal) - -/obj/item/clothing/shoes/chameleon/wizard/change(picked in clothing_choices) - set name = "Change Footwear Appearance" - set category = "Chameleon Items" - set src in usr - - if(isliving(usr)) - var/mob/living/user = usr - if(user.is_wizard()) - ..(picked) - return - to_chat(usr, SPAN_WARNING("You touch \the [src], but nothing happens.")) - -/obj/item/clothing/shoes/chameleon/wizard/emp_act() - return - //********************** //**Chameleon Backpack** //********************** @@ -317,25 +235,6 @@ M.update_inv_back() -/obj/item/storage/backpack/chameleon/wizard/Initialize() - . = ..() - disguise(/obj/item/storage/backpack/wizard) - -/obj/item/storage/backpack/chameleon/wizard/change(picked in clothing_choices) - set name = "Change Backpack Appearance" - set category = "Chameleon Items" - set src in usr - - if(isliving(usr)) - var/mob/living/user = usr - if(user.is_wizard()) - ..(picked) - return - to_chat(usr, SPAN_WARNING("You touch \the [src], but nothing happens.")) - -/obj/item/storage/backpack/chameleon/wizard/emp_act() - return - //******************** //**Chameleon Gloves** //******************** diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 93124123636..b9619bb88fb 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -27,6 +27,7 @@ var/default_material = null // Set this to something else if you want material attributes on init. var/material_armor_modifer = 1 // Adjust if you want seperate types of armor made from the same material to have different protectiveness (e.g. makeshift vs real armor) var/refittable = TRUE // If false doesn't let the clothing be refit in suit cyclers + var/no_overheat = FALSE // Checks to see if the clothing is ignored for the purpose of overheating messages. var/move_trail = /obj/effect/decal/cleanable/blood/tracks/footprints diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm index 9006d7b4478..7e74964d9f1 100644 --- a/code/modules/clothing/suits/wiz_robe.dm +++ b/code/modules/clothing/suits/wiz_robe.dm @@ -6,10 +6,7 @@ slot_l_hand_str = "wizhat", slot_r_hand_str = "wizhat" ) - //Not given any special protective value since the magic robes are full-body protection --NEO - siemens_coefficient = 0.75 body_parts_covered = 0 - wizard_garb = 1 /obj/item/clothing/head/wizard/red name = "red wizard hat" @@ -21,7 +18,6 @@ desc = "It has WIZZARD written across it in sequins. Comes with a cool beard." icon_state = "wizard-fake" body_parts_covered = HEAD|FACE - siemens_coefficient = 1.0 /obj/item/clothing/head/wizard/marisa name = "witch Hat" @@ -62,21 +58,8 @@ desc = "A magnificant, gem-lined robe that seems to radiate power." icon_state = "wizard" item_state = "wizrobe" - gas_transfer_coefficient = 0.01 // IT'S MAGICAL OKAY JEEZ +1 TO NOT DIE - permeability_coefficient = 0.01 - armor = list( - melee = ARMOR_MELEE_RESISTANT, - bullet = ARMOR_BALLISTIC_SMALL, - laser = ARMOR_LASER_SMALL, - energy = ARMOR_ENERGY_SMALL, - bomb = ARMOR_BOMB_PADDED, - bio = ARMOR_BIO_MINOR, - rad = ARMOR_RAD_MINOR - ) - allowed = list(/obj/item/tank/emergency_oxygen,/obj/item/teleportation_scroll,/obj/item/scrying,/obj/item/spellbook,/obj/item/device/soulstone,/obj/item/material/knife/ritual) + allowed = list(/obj/item/tank/emergency_oxygen, /obj/item/material/knife/ritual) flags_inv = HIDEJUMPSUIT - siemens_coefficient = 0.75 - wizard_garb = 1 /obj/item/clothing/suit/wizrobe/red name = "red wizard robe" @@ -115,12 +98,8 @@ desc = "A heavy threaded tweed gray jacket. For a different sort of Gentleman." icon_state = "gentlecoat" item_state = "gentlecoat" - gas_transfer_coefficient = 0.01 // IT'S MAGICAL OKAY JEEZ +1 TO NOT DIE - permeability_coefficient = 0.01 - allowed = list(/obj/item/tank/emergency_oxygen,/obj/item/teleportation_scroll,/obj/item/scrying,/obj/item/spellbook,/obj/item/device/soulstone,/obj/item/material/knife/ritual) + allowed = list(/obj/item/tank/emergency_oxygen, /obj/item/material/knife/ritual) flags_inv = HIDEJUMPSUIT - siemens_coefficient = 0.75 - wizard_garb = 1 body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS flags_inv = 0 @@ -130,15 +109,11 @@ desc = "A rather dull, blue robe meant to mimick real wizard robes." icon_state = "wizard-fake" item_state = "wizrobe" - armor = null - siemens_coefficient = 1.0 /obj/item/clothing/head/wizard/marisa/fake name = "witch hat" desc = "Strange-looking hat-wear, makes you want to cast fireballs." icon_state = "marisa" - armor = null - siemens_coefficient = 1.0 /obj/item/clothing/suit/wizrobe/marisa/fake name = "witch robe" @@ -146,8 +121,6 @@ icon_state = "marisa" item_state = "marisarobe" body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS - armor = null - siemens_coefficient = 1.0 //black robes diff --git a/code/modules/ghostroles/spawner/atom/wizard_familiar.dm b/code/modules/ghostroles/spawner/atom/wizard_familiar.dm deleted file mode 100644 index 7f24f1617d7..00000000000 --- a/code/modules/ghostroles/spawner/atom/wizard_familiar.dm +++ /dev/null @@ -1,16 +0,0 @@ -/datum/ghostspawner/wizard_familiar - short_name = "wizard_familiar" - name = "Wizard Familiar" - desc = "Be a Familiar, act cute, probably end up killing many people somehow." - tags = list("Antagonist") - - loc_type = GS_LOC_ATOM - atom_add_message = "A wizard familiar has been summoned" - - spawn_mob = /mob/living/simple_animal - -/datum/ghostspawner/wizard_familiar/post_spawn(mob/user) - var/mob/living/simple_animal/A = user - if(A.wizard_master) - A.add_spell(new /spell/contract/return_master(A.wizard_master), "const_spell_ready") - to_chat(src, "You are [src], a familiar to [A.wizard_master]. He is your master and your friend. Aid him in his wizarding duties to the best of your ability.") diff --git a/code/modules/ghostroles/spawner/atom/wizardapprentice.dm b/code/modules/ghostroles/spawner/atom/wizardapprentice.dm deleted file mode 100644 index fcbc7dd2e1b..00000000000 --- a/code/modules/ghostroles/spawner/atom/wizardapprentice.dm +++ /dev/null @@ -1,10 +0,0 @@ -/datum/ghostspawner/apprentice - short_name = "apprentice" - name = "Wizard Apprentice" - desc = "Serve your Master. Cast Spells." - tags = list("Antagonist") - - loc_type = GS_LOC_ATOM - atom_add_message = "A wizard apprentice pebble has been created!" - - spawn_mob = /mob/living/carbon/human diff --git a/code/modules/item_worth/worths_list.dm b/code/modules/item_worth/worths_list.dm index 282c0c76341..69ae579da0e 100644 --- a/code/modules/item_worth/worths_list.dm +++ b/code/modules/item_worth/worths_list.dm @@ -155,7 +155,6 @@ var/list/worths = list( /obj/item/stack = -5, //STORAGE, /obj/item/storage/briefcase/crimekit = -50, - /obj/item/storage/belt/wands = 800, /obj/item/storage/belt/military = 700, /obj/item/storage/belt/security/tactical = 500, /obj/item/storage/belt/soulstone = 800, @@ -169,7 +168,6 @@ var/list/worths = list( /obj/item/mining_scanner = 130, /obj/item/bee_smoker = 50, /obj/item/anomaly_core = 20000, - /obj/item/spellbook = 25000, /obj/item/am_containment = 5000, /obj/item/coin/diamond = 500, /obj/item/coin/platinum = 250, @@ -253,7 +251,6 @@ var/list/worths = list( /obj/item/vampiric = 666, /obj/item/anobattery = 1800, /obj/item/anodevice = 3300, - /obj/item/scrying = 20000, /obj/item/soap/deluxe = 15, /obj/item/cane/concealed = 250, /obj/item/cane = 40, @@ -313,7 +310,6 @@ var/list/worths = list( /obj/item/rfd/construction = 1000, /obj/item/rfd_ammo = 50, /obj/item/rfd/service = 300, - /obj/item/teleportation_scroll = 7000, /obj/item/shield/riot/tact = 500, /obj/item/shield/riot = 150, /obj/item/shield/buckler = 200, @@ -360,7 +356,6 @@ var/list/worths = list( /obj/item/implanter = 80, //MELEE, /obj/item/melee/cultblade = 1500, - /obj/item/melee/energy/wizard = 15000, /obj/item/melee/energy/glaive = 5400, /obj/item/melee/energy/sword/powersword = 8000, /obj/item/melee/energy/sword = 5000, @@ -380,7 +375,6 @@ var/list/worths = list( /obj/item/melee/vaurca/rock = 700, /obj/item/tank/jetpack = 390, /obj/item/tank = 40, - /obj/item/contract = 20000, /obj/item/ladder_mobile = 250, /obj/item/contraband/poster = 25, //MATERIAL, @@ -473,7 +467,6 @@ var/list/worths = list( /obj/item/clothing/shoes/combat = 450, /obj/item/clothing/shoes = 25, //SUITS, - /obj/item/clothing/suit/space/void/wizard = 5000, /obj/item/clothing/suit/space/void/captain = 4000, /obj/item/clothing/suit/space/void/merc = 3000, /obj/item/clothing/suit/space/void/security = 3000, @@ -540,7 +533,6 @@ var/list/worths = list( /obj/item/clothing/head/navy = 250, /obj/item/clothing/head/dress/admiral = 1000, /obj/item/clothing/head/dress = 350, - /obj/item/clothing/head/helmet/space/void/wizard = 4000, /obj/item/clothing/head/helmet/space/void/merc = 2000, /obj/item/clothing/head/helmet/space/void/security = 2000, /obj/item/clothing/head/helmet/space/void/captain = 3000, diff --git a/code/modules/mob/living/carbon/slime/items.dm b/code/modules/mob/living/carbon/slime/items.dm index 3c554a22cef..9d440dbf0c5 100644 --- a/code/modules/mob/living/carbon/slime/items.dm +++ b/code/modules/mob/living/carbon/slime/items.dm @@ -224,7 +224,6 @@ icon_state = "golem" unacidable = TRUE layer = TURF_LAYER - var/wizardy = FALSE //if this rune can only be used by a wizard or not var/golem_type = "Adamantine Golem" /obj/effect/golemrune/Initialize() @@ -272,17 +271,11 @@ G.accent = G.species.default_accent G.preEquipOutfit(/datum/outfit/admin/golem, FALSE) G.equipOutfit(/datum/outfit/admin/golem, FALSE) - if(wizardy) - wizard_golems.add_antagonist(G.mind, TRUE, TRUE, FALSE, TRUE, TRUE) - else - to_chat(G, SPAN_NOTICE("You are a golem. Serve your master, and assist them in completing their goals at any cost.")) + to_chat(G, SPAN_NOTICE("You are a golem. Serve your master, and assist them in completing their goals at any cost.")) qdel(src) return G -/obj/effect/golemrune/wizard - wizardy = TRUE - /mob/living/carbon/slime/has_eyes() return FALSE diff --git a/code/modules/mob/living/simple_animal/familiars/familiars.dm b/code/modules/mob/living/simple_animal/familiars/familiars.dm deleted file mode 100644 index a4955d46c6a..00000000000 --- a/code/modules/mob/living/simple_animal/familiars/familiars.dm +++ /dev/null @@ -1,234 +0,0 @@ -/mob/living/simple_animal/familiar - name = "familiar" - desc = "No wizard is complete without a mystical sidekick." - supernatural = 1 - - response_help = "pets" - response_disarm = "pushes" - response_harm = "hits" - - universal_speak = 1 - universal_understand = 1 - - min_oxy = 1 //still require a /bit/ of air. - max_co2 = 0 - unsuitable_atoms_damage = 1 - - hunger_enabled = 0 - supernatural = 1 - - var/list/wizardy_spells = list() - -/mob/living/simple_animal/familiar/Initialize() - . = ..() - add_language(LANGUAGE_TCB) - for(var/spell in wizardy_spells) - src.add_spell(new spell, "const_spell_ready") - -/mob/living/simple_animal/familiar/do_animate_chat(var/message, var/datum/language/language, var/small, var/list/show_to, var/duration, var/list/message_override) - INVOKE_ASYNC(src, /atom/movable/proc/animate_chat, message, language, small, show_to, duration) - -/mob/living/simple_animal/familiar/can_name(var/mob/living/M) - if(M.is_wizard(TRUE)) - return ..() - return FALSE - -/mob/living/simple_animal/familiar/carcinus - name = "crab" - desc = "A small crab said to be made of stone and starlight." - icon = 'icons/mob/npc/animal.dmi' - icon_state = "evilcrab" - icon_living = "evilcrab" - icon_dead = "evilcrab_dead" - - speak_emote = list("chitters","clicks") - organ_names = list("head", "carapace") - - health = 200 - maxHealth = 200 - melee_damage_lower = 10 - melee_damage_upper = 15 - friendly = "pinches" - attacktext = "pinched" - resistance = 9 - canbrush = TRUE - brush = /obj/item/reagent_containers/glass/rag - -/mob/living/simple_animal/familiar/pike - name = "space pike" - desc = "A bigger, more magical cousin of the space carp." - icon = 'icons/mob/npc/spaceshark.dmi' - icon_state = "shark" - icon_living = "shark" - icon_dead = "shark_dead" - icon_rest = "shark_rest" - pixel_x = -16 - - speak_emote = list("gnashes") - attacktext = "bitten" - attack_sound = 'sound/weapons/bite.ogg' - - environment_smash = 2 - health = 100 - maxHealth = 100 - melee_damage_lower = 15 - melee_damage_upper = 15 - canbrush = TRUE - brush = /obj/item/reagent_containers/glass/rag - meat_type = /obj/item/reagent_containers/food/snacks/fish/carpmeat - organ_names = list("head", "chest", "tail", "left flipper", "right flipper") - - min_oxy = 0 - - wizardy_spells = list(/spell/aoe_turf/conjure/forcewall) - - flying = TRUE - -/mob/living/simple_animal/familiar/pike/Allow_Spacemove(var/check_drift = 0) - return 1 - -/mob/living/simple_animal/familiar/horror - name = "horror" - desc = "A sanity-destroying otherthing." - icon = 'icons/mob/mob.dmi' - icon_state = "horror" - icon_living = "horror" - icon_dead = "horror_dead" - organ_names = list("meaty core") - -/mob/living/simple_animal/familiar/horror/Initialize() - . = ..() - if(prob(25)) - icon_state = "horror_alt" - icon_living = "horror_alt" - icon_dead = "horror_alt_dead" - organ_names = list("head", "chest", "tail", "leg") - else if(prob(25)) - icon_state = "abomination" - icon_living = "abomination" - icon_dead = "abomination_dead" - organ_names = list("head", "chest", "tail", "leg") - - speak_emote = list("moans", "groans") - - response_help = "thinks better of touching" - - environment_smash = 2 - health = 150 - maxHealth = 150 - melee_damage_lower = 10 - melee_damage_upper = 10 - attacktext = "clawed" - - wizardy_spells = list(/spell/targeted/torment) - -/mob/living/simple_animal/familiar/horror/death() - ..(null,"rapidly deteriorates") - - ghostize() - gibs(src.loc) - qdel(src) - - -/mob/living/simple_animal/familiar/goat - name = "goat" - desc = "A sprightly looking goat." - icon = 'icons/mob/npc/livestock.dmi' - icon_state = "goat" - icon_living = "goat" - icon_dead = "goat_dead" - speak_emote = list("brays") - attacktext = "kicked" - - health = 80 - maxHealth = 80 - - melee_damage_lower = 8 - melee_damage_upper = 12 - mob_size = 4.5 //weight based on Chanthangi goats - density = 0 - wizardy_spells = list(/spell/aoe_turf/smoke) - canbrush = TRUE - - meat_type = /obj/item/reagent_containers/food/snacks/meat - meat_amount = 6 - butchering_products = list(/obj/item/stack/material/animalhide = 3) - - -/mob/living/simple_animal/familiar/pet //basically variants of normal animals with spells. - icon = 'icons/mob/npc/animal.dmi' - -/mob/living/simple_animal/familiar/pet/MouseDrop(atom/over_object) - var/mob/living/carbon/H = over_object - if(!istype(H) || !Adjacent(H)) return ..() - - if(H.a_intent == "help" && holder_type) - get_scooped(H) - return - else - return ..() - -/mob/living/simple_animal/familiar/pet/cat - name = "black cat" - desc = "A pitch black cat. Said to be especially unlucky." - icon = 'icons/mob/npc/pets.dmi' - icon_state = "cat3" - icon_living = "cat3" - icon_dead = "cat3_dead" - icon_rest = "cat3_rest" - can_nap = 1 - - see_in_dark = 8 - see_invisible = SEE_INVISIBLE_NOLIGHTING - - speak_emote = list("meows", "purrs") - holder_type = /obj/item/holder/cat/black/familiar - mob_size = MOB_SMALL - - health = 45 - maxHealth = 45 - melee_damage_lower = 3 - melee_damage_upper = 4 - attacktext = "clawed" - density = 0 - - wizardy_spells = list(/spell/targeted/subjugation) - canbrush = TRUE - - meat_type = /obj/item/reagent_containers/food/snacks/meat - butchering_products = list(/obj/item/stack/material/animalhide/cat = 2) - - -/mob/living/simple_animal/rat/familiar - name = "ancient rat" - desc = "A small rodent. It looks very old." - body_color = "gray" - - see_in_dark = 8 - see_invisible = SEE_INVISIBLE_NOLIGHTING - - health = 25 - maxHealth = 25 - melee_damage_lower = 1 - melee_damage_upper = 1 - attacktext = "nibbled" - universal_speak = 1 - universal_understand = 1 - stop_automated_movement = TRUE - - min_oxy = 1 //still require a /bit/ of air. - max_co2 = 0 - unsuitable_atoms_damage = 1 - - supernatural = 1 - -/mob/living/simple_animal/rat/familiar/Initialize() - . = ..() - add_spell(new /spell/targeted/heal_target, "const_spell_ready") - add_spell(new /spell/targeted/heal_target/area, "const_spell_ready") - add_language(LANGUAGE_TCB) - name = initial(name) - desc = initial(desc) - -/mob/living/simple_animal/rat/familiar/do_animate_chat(var/message, var/datum/language/language, var/small, var/list/show_to, var/duration, var/list/message_override) - INVOKE_ASYNC(src, /atom/movable/proc/animate_chat, message, language, small, show_to, duration) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/faithless.dm b/code/modules/mob/living/simple_animal/hostile/faithless.dm index 4a2497ec9bc..8982049efff 100644 --- a/code/modules/mob/living/simple_animal/hostile/faithless.dm +++ b/code/modules/mob/living/simple_animal/hostile/faithless.dm @@ -69,27 +69,6 @@ /mob/living/simple_animal/hostile/faithless/do_animate_chat(var/message, var/datum/language/language, var/small, var/list/show_to, var/duration, var/list/message_override) INVOKE_ASYNC(src, /atom/movable/proc/animate_chat, message, language, small, show_to, duration) -/mob/living/simple_animal/hostile/faithless/wizard - name = "lost soul" - desc = "The result of a dark bargain." - speed = -3 - maxHealth = 400 - health = 400 - universal_speak = 1 - universal_understand = 1 - - see_in_dark = 8 - see_invisible = SEE_INVISIBLE_NOLIGHTING - harm_intent_damage = 0 - melee_damage_lower = 25 - melee_damage_upper = 25 - var/list/darkform_spells = list(/spell/aoe_turf/conjure/forcewall/lesser) - -/mob/living/simple_animal/hostile/faithless/wizard/Initialize() - . = ..() - for(var/spell in darkform_spells) - src.add_spell(new spell, "const_spell_ready") - /mob/living/simple_animal/hostile/faithless/can_fall() return FALSE diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 45aa4a20e5c..dd8c4173166 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -89,8 +89,6 @@ var/resistance = 0 // Damage reduction var/resist_mod = 1 // a multiplier for the chance the animal has to break out - var/wizard_master - //Null rod stuff var/supernatural = 0 var/purge = 0 diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 7e78e2e7932..75e5de49ffa 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -210,12 +210,6 @@ proc/getsensorlevel(A) /proc/hsl2rgb(h, s, l) return //TODO: Implement -/mob/living/proc/is_wizard(exclude_apprentice = FALSE) - if(exclude_apprentice) - return mind && (mind.assigned_role == "Space Wizard") - else - return mind && (mind.assigned_role == "Space Wizard" || mind.assigned_role == "Apprentice") - /mob/proc/is_berserk() return FALSE diff --git a/code/modules/projectiles/guns/energy/magic.dm b/code/modules/projectiles/guns/energy/magic.dm index 38e0ad0dafa..c77252d35b0 100644 --- a/code/modules/projectiles/guns/energy/magic.dm +++ b/code/modules/projectiles/guns/energy/magic.dm @@ -1,181 +1,3 @@ -/* Staves */ - -/obj/item/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 = 'icons/obj/guns/staffofchange.dmi' - icon_state = "staffofchange" - item_state = "staffofchange" - has_item_ratio = FALSE - fire_sound = 'sound/magic/Staff_Change.ogg' - flags = CONDUCT - slot_flags = SLOT_BACK - w_class = ITEMSIZE_LARGE - max_shots = 1 - displays_maptext = TRUE - projectile_type = /obj/item/projectile/change - origin_tech = list(TECH_COMBAT = 7, TECH_MAGNET = 5, TECH_BLUESPACE = 7) - self_recharge = 1 - recharge_time = 15 - charge_meter = 0 - pin = /obj/item/device/firing_pin/magic - has_safety = FALSE - -/obj/item/gun/energy/staff/emp_act(severity) // to prevent it from breaking. - return - -obj/item/gun/energy/staff/special_check(var/mob/living/user) - if(HULK in user.mutations) - to_chat(user, "In your rage you momentarily forget the operation of this stave!") - return 0 - if(!user.is_wizard()) - if(istype(user, /mob/living/carbon/human)) - //Save the users active hand - var/mob/living/new_mob - var/mob/living/carbon/human/H = user - for(var/obj/item/W in H) - if(istype(W, /obj/item/implant)) - qdel(W) - continue - H.drop_from_inventory(W) - playsound(user, 'sound/weapons/emitter.ogg', 40, 1) - var/obj/item/organ/external/LA = H.get_organ(BP_L_ARM) - var/obj/item/organ/external/RA = H.get_organ(BP_R_ARM) - var/obj/item/organ/external/LL = H.get_organ(BP_L_LEG) - var/obj/item/organ/external/RL = H.get_organ(BP_R_LEG) - LA.droplimb(0,DROPLIMB_BLUNT) - RA.droplimb(0,DROPLIMB_BLUNT) - LL.droplimb(0,DROPLIMB_BLUNT) - RL.droplimb(0,DROPLIMB_BLUNT) - playsound(user, 'sound/effects/splat.ogg', 50, 1) - user.visible_message("With a sickening series of crunches, [user]'s body shrinks, and they begin to sprout feathers!") - user.visible_message("[user] screams!") - new_mob = new /mob/living/simple_animal/parrot(H.loc) - new_mob.universal_speak = 1 - new_mob.key = H.key - new_mob.set_intent(I_HURT) - qdel(H) - sleep(20) - new_mob.say("Poly wanna cracker!") - return 0 - return 1 - -/obj/item/gun/energy/staff/handle_click_empty(mob/user = null) - if (user) - user.visible_message("*fizzle*", "*fizzle*") - else - src.visible_message("*fizzle*") - playsound(src.loc, 'sound/effects/sparks1.ogg', 100, 1) - -/obj/item/gun/energy/staff/animate - name = "staff of animation" - desc = "An artefact that spits bolts of life-force which causes objects which are hit by it to animate and come to life! This magic doesn't affect machines." - projectile_type = /obj/item/projectile/animate - fire_sound = 'sound/magic/wand.ogg' - max_shots = 10 - -obj/item/gun/energy/staff/animate/special_check(var/mob/living/user) - if(HULK in user.mutations) - to_chat(user, "In your rage you momentarily forget the operation of this stave!") - return 0 - if(!user.is_wizard()) - if(istype(user, /mob/living/carbon/human)) - //Save the users active hand - var/mob/living/carbon/human/H = user - var/obj/item/organ/external/LA = H.get_organ(BP_L_HAND) - var/obj/item/organ/external/RA = H.get_organ(BP_R_HAND) - var/active_hand = H.hand - playsound(user, 'sound/effects/blobattack.ogg', 40, 1) - user.visible_message(" With a sickening crunch, [user]'s hand rips itself off, and begins crawling away!") - user.visible_message("[user] screams!") - user.drop_item() - if(active_hand) - LA.droplimb(0,DROPLIMB_EDGE) - new /mob/living/simple_animal/hostile/mimic/copy(LA.loc, LA) - qdel(LA) - else - RA.droplimb(0,DROPLIMB_EDGE) - new /mob/living/simple_animal/hostile/mimic/copy(RA.loc, RA) - qdel(RA) - return 0 - return 1 - -/obj/item/gun/energy/staff/focus - name = "mental focus" - desc = "An artefact that channels the will of the user into destructive bolts of force. If you aren't careful with it, you might poke someone's brain out." - icon = 'icons/obj/guns/mental_focus.dmi' - icon_state = "focus" - item_state = "focus" - fire_sound = 'sound/magic/wand.ogg' - slot_flags = SLOT_BACK - projectile_type = /obj/item/projectile/forcebolt - -obj/item/gun/energy/staff/focus/special_check(var/mob/living/user) - if(HULK in user.mutations) - to_chat(user, "In your rage you momentarily forget the operation of this stave!") - return 0 - if(!user.is_wizard()) - if(ishuman(user)) - //Save the users active hand - var/mob/living/carbon/human/H = user - var/obj/item/organ/external/LA = H.get_organ(BP_L_ARM) - var/obj/item/organ/external/RA = H.get_organ(BP_R_ARM) - var/active_hand = H.hand - playsound(user, 'sound/magic/lightningbolt.ogg', 40, 1) - to_chat(user, "Coruscating waves of energy wreathe around your arm...hot...so hot!") - user.show_message("[user] screams!",2) - user.drop_item() - if(active_hand) - LA.droplimb(0,DROPLIMB_BURN) - else - RA.droplimb(0,DROPLIMB_BURN) - return 0 - return 1 - - -obj/item/gun/energy/staff/focus/toggle_firing_mode(mob/living/user) - if(projectile_type == /obj/item/projectile/forcebolt) - charge_cost = 400 - to_chat(user, "The [src.name] will now strike a small area.") - projectile_type = /obj/item/projectile/forcebolt/strong - else - charge_cost = 200 - to_chat(user, "The [src.name] will now strike only a single person.") - projectile_type = /obj/item/projectile/forcebolt - - -/obj/item/gun/energy/staff/chaos - name = "staff of chaos" - desc = "An artefact that spits bolts of chaotic energy, expect anything." - icon = 'icons/obj/guns/staff_of_chaos.dmi' - icon_state = "staffofchaos" - item_state = "staffofchaos" - fire_sound = 'sound/magic/Staff_Chaos.ogg' - flags = CONDUCT - w_class = ITEMSIZE_LARGE - max_shots = 5 - projectile_type = /obj/item/projectile/magic - var/list/possible_projectiles = list(/obj/item/projectile/magic, /obj/item/projectile/change, /obj/item/projectile/forcebolt, - /obj/item/gun/energy/staff/animate, /obj/item/projectile/magic/fireball, /obj/item/projectile/magic/teleport, - /obj/item/projectile/temp, /obj/item/projectile/ion, /obj/item/projectile/energy/declone, /obj/item/projectile/meteor, - /obj/item/projectile/beam/thermaldrill, /obj/item/projectile/beam/energy_net, /obj/item/projectile/energy/bee) - -/obj/item/gun/energy/staff/chaos/special_check(var/mob/living/user) - projectile_type = pick(possible_projectiles) - if(HULK in user.mutations) - to_chat(user, "In your rage you momentarily forget the operation of this stave!") - return 0 - if(!user.is_wizard()) - if(istype(user, /mob/living/carbon/human)) - var/obj/P = consume_next_projectile() - if(P) - if(process_projectile(P, user, user, pick(BP_HEAD, BP_CHEST))) - handle_post_fire(user, user) - user.visible_message("\The [src] backfires!") - user.drop_item() - return 0 - return 1 - //wands /obj/item/gun/energy/wand @@ -192,7 +14,6 @@ obj/item/gun/energy/staff/focus/toggle_firing_mode(mob/living/user) projectile_type = /obj/item/projectile/magic origin_tech = list(TECH_COMBAT = 6, TECH_MAGNET = 5, TECH_BLUESPACE = 6) charge_meter = 0 - pin = /obj/item/device/firing_pin/magic charge_failure_message = null has_safety = FALSE @@ -213,138 +34,4 @@ obj/item/gun/energy/staff/focus/toggle_firing_mode(mob/living/user) return 1 /obj/item/gun/energy/wand/toy - origin_tech = null - -/obj/item/gun/energy/wand/fire - name = "wand of fire" - desc = "A wand that can fire destructive flames." - icon = 'icons/obj/wands.dmi' - icon_state = "firewand" - item_state = "firewand" - fire_sound = 'sound/magic/Fireball.ogg' - max_shots = 5 - projectile_type = /obj/item/projectile/magic/fireball - -/obj/item/gun/energy/wand/fire/special_check(var/mob/living/user) - if(HULK in user.mutations) - to_chat(user, "In your rage you momentarily forget the operation of this wand!") - return 0 - if(!user.is_wizard()) - if(istype(user, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = user - H.IgniteMob(15) - H.visible_message("\The [src] explodes in a shower of fire!") - H.drop_item() - qdel(src) - return 0 - return 1 - - -/obj/item/gun/energy/wand/polymorph - name = "wand of polymorph" - desc = "A wand that will change the shape of the its victims." - icon = 'icons/obj/wands.dmi' - icon_state = "polywand" - item_state = "polywand" - fire_sound = 'sound/magic/Staff_Change.ogg' - max_shots = 10 - projectile_type = /obj/item/projectile/change - -/obj/item/gun/energy/wand/polymorph/special_check(var/mob/living/user) - if(HULK in user.mutations) - to_chat(user, "In your rage you momentarily forget the operation of this wand!") - return 0 - if(!user.is_wizard()) - if(istype(user, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = user - H.drop_item() - H.visible_message("\The [H] collapses on the floor, their body shrinking and growing hair!") - H.monkeyize() - H.equip_to_slot_or_del(new /obj/item/reagent_containers/food/snacks/grown/banana(H), slot_l_hand) - qdel(src) - return 0 - return 1 - -/obj/item/gun/energy/wand/teleport - name = "wand of teleportation" - desc = "This wand will send your targets away, or closer, to yourself." - icon = 'icons/obj/wands.dmi' - icon_state = "telewand" - item_state = "telewand" - fire_sound = 'sound/magic/Wand_Teleport.ogg' - max_shots = 10 - projectile_type = /obj/item/projectile/magic/teleport - -/obj/item/gun/energy/wand/teleport/special_check(var/mob/living/user) //todo: think of something else for this - if(HULK in user.mutations) - to_chat(user, "In your rage you momentarily forget the operation of this wand!") - return 0 - if(!user.is_wizard()) - if(istype(user, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = user - var/obj/item/organ/O = H.internal_organs_by_name[pick(H.species.vision_organ || BP_EYES, BP_APPENDIX, BP_KIDNEYS, BP_LIVER, BP_HEART, BP_LUNGS, BP_BRAIN)] - if(O == null) - to_chat(user, "You can't make any sense of the arcane glyphs... maybe you should try again.") - else - to_chat(user, "As you stumble over the arcane glyphs, you feel a twisting sensation in your [O.name]!") - user.visible_message("\A flash of smoke pours out of [user]'s orifices!") - playsound(user, 'sound/magic/lightningshock.ogg', 40, 1) - var/datum/effect/effect/system/smoke_spread/smoke = new /datum/effect/effect/system/smoke_spread() - smoke.set_up(5, 0, user.loc) - smoke.attach(user) - smoke.start() - user.emote("scream") - user.drop_item() - if(istype(O)) - O.removed(user) - qdel(src) - return 0 - return 1 - -/obj/item/gun/energy/wand/force - name = "wand of force" - desc = "A more portable version of the mental focus, still deadly." - icon = 'icons/obj/wands.dmi' - icon_state = "deathwand" - item_state = "deathwand" - max_shots = 10 - projectile_type = /obj/item/projectile/forcebolt - -/obj/item/gun/energy/wand/force/special_check(var/mob/living/user) - if(HULK in user.mutations) - to_chat(user, "In your rage you momentarily forget the operation of this wand!") - return 0 - if(!user.is_wizard()) - if(istype(user, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = user - H.visible_message("\The [src] escapes from [H]'s hand, hitting their face and shattering into pieces!") - H.apply_damage(35, BRUTE, BP_HEAD, 0) - H.adjustBrainLoss(50, 55) - H.sdisabilities += CLUMSY - H.drop_item() - qdel(src) - return 0 - return 1 - -/obj/item/gun/energy/wand/animation - name = "wand of animation" - desc = "This wand will create a legion of murderous toilets, for your own leisure." - icon = 'icons/obj/wands.dmi' - icon_state = "revivewand" - item_state = "revivewand" - max_shots = 10 - projectile_type = /obj/item/projectile/animate - -/obj/item/gun/energy/wand/animation/special_check(var/mob/living/user) - if(HULK in user.mutations) - to_chat(user, "In your rage you momentarily forget the operation of this wand!") - return 0 - if(!user.is_wizard()) - if(istype(user, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = user - H.visible_message("\The [src] jumps from [H]'s hand and swifts into a crate!") - new /mob/living/simple_animal/hostile/mimic(H.loc) - H.drop_item() - qdel(src) - return 0 - return 1 + origin_tech = null \ No newline at end of file diff --git a/code/modules/projectiles/pins.dm b/code/modules/projectiles/pins.dm index e0cfccc62a8..e6a2917a928 100644 --- a/code/modules/projectiles/pins.dm +++ b/code/modules/projectiles/pins.dm @@ -89,12 +89,6 @@ Firing pins as a rule can't be removed without replacing them, blame a really sh Pins Below. */ -//only used in wizard staffs/wands. -/obj/item/device/firing_pin/magic - name = "magic crystal shard" - desc = "A small enchanted shard which allows magical weapons to fire." - icon_state = "firing_pin_wizwoz" - // Test pin, works only near firing ranges. /obj/item/device/firing_pin/test_range name = "test-range firing pin" diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index 67129ce9164..4b1344b9bfa 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -1121,7 +1121,6 @@ /mob/living/simple_animal/hostile/syndicate/ranged/space, /mob/living/simple_animal/hostile/alien/queen/large, /mob/living/simple_animal/hostile/faithless, - /mob/living/simple_animal/hostile/faithless/wizard, /mob/living/simple_animal/hostile/retaliate, /mob/living/simple_animal/hostile/retaliate/clown, /mob/living/simple_animal/hostile/alien, diff --git a/code/modules/spell_system/artifacts/armor/wizard_voidsuit.dm b/code/modules/spell_system/artifacts/armor/wizard_voidsuit.dm deleted file mode 100644 index 02b5712468d..00000000000 --- a/code/modules/spell_system/artifacts/armor/wizard_voidsuit.dm +++ /dev/null @@ -1,65 +0,0 @@ -/obj/item/clothing/head/helmet/space/void/wizard - name = "gem-encrusted voidsuit helmet" - desc = "A bizarre gem-encrusted helmet that radiates magical energies." - icon_state = "rig0-wiz" - item_state_slots = list( - slot_l_hand_str = "wiz_helm", - slot_r_hand_str = "wiz_helm" - ) - unacidable = 1 //No longer shall our kind be foiled by lone chemists with spray bottles! - armor = list(melee = 40, bullet = 20, laser = 20,energy = 20, bomb = 35, bio = 100, rad = 60) - siemens_coefficient = 0.35 - wizard_garb = 1 - species_restricted = list(BODYTYPE_HUMAN, BODYTYPE_IPC_INDUSTRIAL, BODYTYPE_SKELETON, BODYTYPE_IPC_ZENGHU, BODYTYPE_IPC_BISHOP) - -/obj/item/clothing/head/helmet/space/void/wizard/equipped(var/mob/living/user) - if(!user.is_wizard()) - var/mob/living/carbon/human/H = user - var/obj/item/organ/external/LH = H.get_organ(BP_L_HAND) - var/obj/item/organ/external/RH = H.get_organ(BP_R_HAND) - var/active_hand = H.hand - to_chat(user, "Your hand passes through the [src] with a flash of searing heat!") - playsound(user, 'sound/effects/sparks4.ogg', 40, 1) - user.drop_item() - if(active_hand) - LH.droplimb(0,DROPLIMB_BURN) - else - RH.droplimb(0,DROPLIMB_BURN) - return - else - ..() - -/obj/item/clothing/suit/space/void/wizard - icon_state = "rig-wiz" - name = "gem-encrusted voidsuit" - desc = "A bizarre gem-encrusted suit that radiates magical energies." - item_state = "wiz_voidsuit" - item_state_slots = list( - slot_l_hand_str = "wiz_hardsuit", - slot_r_hand_str = "wiz_hardsuit" - ) - slowdown = 1 - w_class = ITEMSIZE_NORMAL - unacidable = 1 - armor = list(melee = 40, bullet = 20, laser = 20,energy = 20, bomb = 35, bio = 100, rad = 60) - siemens_coefficient = 0.35 - wizard_garb = 1 - allowed = list(/obj/item/device/flashlight,/obj/item/tank,/obj/item/device/suit_cooling_unit,/obj/item/teleportation_scroll,/obj/item/scrying,/obj/item/spellbook,/obj/item/device/soulstone,/obj/item/material/knife/ritual) - species_restricted = list(BODYTYPE_HUMAN, BODYTYPE_SKRELL, BODYTYPE_IPC_INDUSTRIAL, BODYTYPE_SKELETON, BODYTYPE_IPC_ZENGHU, BODYTYPE_IPC_BISHOP) - -/obj/item/clothing/suit/space/void/wizard/equipped(var/mob/living/user) - if(!user.is_wizard()) - var/mob/living/carbon/human/H = user - var/obj/item/organ/external/LH = H.get_organ(BP_L_HAND) - var/obj/item/organ/external/RH = H.get_organ(BP_R_HAND) - var/active_hand = H.hand - to_chat(user, "Your hand passes through the [src] with a flash of searing heat!") - playsound(user, 'sound/effects/sparks4.ogg', 40, 1) - user.drop_item() - if(active_hand) - LH.droplimb(0,DROPLIMB_BURN) - else - RH.droplimb(0,DROPLIMB_BURN) - return - else - ..() diff --git a/code/modules/spell_system/artifacts/items/apprentice_pebble.dm b/code/modules/spell_system/artifacts/items/apprentice_pebble.dm deleted file mode 100644 index 04e64ac08db..00000000000 --- a/code/modules/spell_system/artifacts/items/apprentice_pebble.dm +++ /dev/null @@ -1,46 +0,0 @@ -/obj/item/apprentice_pebble - name = "apprentice pebble" - desc = "A pebble, it feels warm to the touch." - icon = 'icons/obj/wizard.dmi' - icon_state = "pebble" - origin_tech = list(TECH_BLUESPACE = 6, TECH_MATERIAL = 6, TECH_BIO = 6) - w_class = ITEMSIZE_SMALL - var/obj/item/contract/apprentice/contract - -/obj/item/apprentice_pebble/Initialize() - . = ..() - contract = new /obj/item/contract/apprentice(src) - SSghostroles.add_spawn_atom("apprentice", src) - -/obj/item/apprentice_pebble/Destroy() - if(contract) - QDEL_NULL(contract) - SSghostroles.remove_spawn_atom("apprentice", src) - return ..() - -/obj/item/apprentice_pebble/assign_player(var/mob/user) - var/mob/living/carbon/human/G = new /mob/living/carbon/human(get_turf(src)) - G.ckey = user.ckey - G.real_name = "[pick(wizard_first)] [pick(wizard_second)]" - G.name = G.real_name - - G.preEquipOutfit(/datum/outfit/admin/wizard/apprentice, FALSE) - G.equipOutfit(/datum/outfit/admin/wizard/apprentice, FALSE) - - G.put_in_hands(contract) - contract = null - - var/datum/effect/effect/system/smoke_spread/smoke = new /datum/effect/effect/system/smoke_spread() - smoke.set_up(5, 0, get_turf(src)) - smoke.start() - - qdel(src) - - return G - -/obj/item/apprentice_pebble/pickup(mob/living/user) - ..() - if(!user.is_wizard()) - to_chat(user, SPAN_WARNING("As you pick up \the [src], you feel a wave of power wash over you.")) - for(var/obj/machinery/light/P in view(7, user)) - P.flicker(1) diff --git a/code/modules/spell_system/artifacts/items/lich_phylactery.dm b/code/modules/spell_system/artifacts/items/lich_phylactery.dm index cee338f09e0..667975ced6f 100644 --- a/code/modules/spell_system/artifacts/items/lich_phylactery.dm +++ b/code/modules/spell_system/artifacts/items/lich_phylactery.dm @@ -39,7 +39,6 @@ /obj/item/phylactery/pickup(mob/living/user as mob) ..() - if(!user.is_wizard() && src.lich) - to_chat(user, "As you pick up \the [src], you feel a wave of dread wash over you.") - for(var/obj/machinery/light/P in view(7, user)) - P.flicker(1) + to_chat(user, "As you pick up \the [src], you feel a wave of dread wash over you.") + for(var/obj/machinery/light/P in view(7, user)) + P.flicker(1) diff --git a/code/modules/spell_system/artifacts/items/monster_manual.dm b/code/modules/spell_system/artifacts/items/monster_manual.dm deleted file mode 100644 index 6f725d16b91..00000000000 --- a/code/modules/spell_system/artifacts/items/monster_manual.dm +++ /dev/null @@ -1,83 +0,0 @@ -/obj/item/monster_manual - name = "bestiarum" - desc = "A book detailing various magical creatures." - icon = 'icons/obj/library.dmi' - icon_state = "bookHacking" - throw_speed = 1 - throw_range = 5 - w_class = ITEMSIZE_SMALL - var/uses = 1 - var/temp = null - var/list/monster = list(/mob/living/simple_animal/familiar/pet/cat, - /mob/living/simple_animal/rat/familiar, - /mob/living/simple_animal/familiar/carcinus, - /mob/living/simple_animal/familiar/horror, - /mob/living/simple_animal/familiar/goat, - /mob/living/simple_animal/familiar/pike - ) - var/list/monster_info = list( "It is well known that the blackest of cats make good familiars.", - "Rats are small but fragile creatures. This one is gifted with unending life, and the ability to renew others.", - "A mortal decendant of the original Carcinus, it is said their shells are near impenetrable and their claws as sharp as knives.", - "A creature from other plane, its very own presence is enough to shatter the sanity of men.", - "A stubborn and mischievous creature, this goat delights in stirring trouble.", - "The more carnivorous and knowledge hungry cousin of the space carp. Keep away from books." - ) - -/obj/item/monster_manual/attack_self(mob/living/user) - if(!user) - return - if(!user.is_wizard()) - to_chat(user, SPAN_WARNING("When you try to open the book, horrors pours out from among the pages!")) - new /mob/living/simple_animal/hostile/creature(get_turf(user)) - playsound(user, 'sound/magic/Summon_Karp.ogg', 100, 1) - return - else - user.set_machine(src) - interact(user) - -/obj/item/monster_manual/interact(mob/user) - var/dat - if(temp) - dat = "[temp]
Return" - else - dat = "

bestiarum

You have [uses] uses left.
" - for(var/i=1;i<=monster_info.len;i++) - var/mob/M = monster[i] - var/name = capitalize(initial(M.name)) - dat += "
[name] - [monster_info[i]]
" - - var/datum/browser/manual_win = new(user, "monstermanual", capitalize_first_letters(name)) - manual_win.set_content(dat) - manual_win.open() - -/obj/item/monster_manual/Topic(href, href_list) - ..() - if(!Adjacent(usr)) - usr << browse(null,"window=monstermanual") - return - if(href_list["temp"]) - temp = null - if(href_list["path"]) - if(uses <= 0) - to_chat(usr, SPAN_WARNING("This book is out of uses.")) - return - - var/path = text2path(href_list["path"]) - if(!ispath(path)) - to_chat(usr, "Invalid mob path in [src]. Contact a coder.") - return - - if(!(path in monster)) - return - - var/mob/living/simple_animal/F = new path(get_turf(src)) - F.wizard_master = usr - F.faction = usr.faction - temp = "You have attempted summoning \the [F]" - SSghostroles.add_spawn_atom("wizard_familiar", F) - uses-- - - if(Adjacent(usr)) - src.interact(usr) - else - usr << browse(null,"window=monstermanual") diff --git a/code/modules/spell_system/artifacts/items/rune_sword.dm b/code/modules/spell_system/artifacts/items/rune_sword.dm deleted file mode 100644 index b382217dab7..00000000000 --- a/code/modules/spell_system/artifacts/items/rune_sword.dm +++ /dev/null @@ -1,53 +0,0 @@ -/obj/item/melee/energy/wizard - name = "rune sword" - desc = "A large sword engraved with arcane markings, it seems to reverberate with unearthly powers." - icon = 'icons/obj/sword.dmi' - icon_state = "runesword0" - item_state = "runesword0" - contained_sprite = TRUE - active_force = 40 - active_throwforce = 40 - active_w_class = ITEMSIZE_HUGE - force = 20 - throwforce = 30 - throw_speed = 5 - throw_range = 10 - w_class = ITEMSIZE_HUGE - slot_flags = SLOT_BELT - origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 8) - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - hitsound = 'sound/weapons/bladeslice.ogg' - sharp = 1 - edge = TRUE - base_reflectchance = 60 - base_block_chance = 60 - can_block_bullets = 1 - shield_power = 150 - -/obj/item/melee/energy/wizard/activate(mob/living/user) - ..() - icon_state = "runesword1" - item_state = "runesword1" - to_chat(user, "\The [src] surges to life!.") - -/obj/item/melee/energy/wizard/deactivate(mob/living/user) - ..() - icon_state = "runesword0" - item_state = "runesword0" - to_chat(user, "\The [src] slowly dies out.") - -/obj/item/melee/energy/wizard/attack(mob/living/M, mob/living/user, var/target_zone) - if(user.is_wizard()) - return ..() - - var/zone = (user.hand ? BP_L_ARM:BP_R_ARM) - if(ishuman(user)) - var/mob/living/carbon/human/H = user - var/obj/item/organ/external/affecting = H.get_organ(zone) - to_chat(user, "The sword refuses you as its true wielder, slashing your [affecting.name] instead!") - - user.apply_damage(active_force, BRUTE, zone, 0, damage_flags = DAM_SHARP|DAM_EDGE) - - user.drop_from_inventory(src) - - return 1 diff --git a/code/modules/spell_system/artifacts/items/scrying_orb.dm b/code/modules/spell_system/artifacts/items/scrying_orb.dm deleted file mode 100644 index 3c6d7270512..00000000000 --- a/code/modules/spell_system/artifacts/items/scrying_orb.dm +++ /dev/null @@ -1,42 +0,0 @@ -/obj/item/scrying - name = "scrying orb" - desc = "An incandescent orb of otherworldly energy, staring into it gives you vision beyond mortal means." - icon = 'icons/obj/projectiles.dmi' - icon_state = "bluespace" - throw_speed = 3 - throw_range = 7 - throwforce = 10 - damtype = BURN - force = 10 - hitsound = 'sound/items/welder_pry.ogg' - -/obj/item/scrying/attack_self(mob/living/user as mob) - if(!user.is_wizard()) - if(istype(user, /mob/living/carbon/human)) - //Save the users active hand - var/mob/living/carbon/human/H = user - var/obj/item/organ/E = H.get_eyes(no_synthetic = TRUE) - if (!E) - to_chat(user, "You stare deep into the abyss... and nothing happens. What a letdown.") - return - - to_chat(user, "You stare deep into the abyss... and the abyss stares back.") - sleep(10) - to_chat(user, "Your [E.name] fill with painful light, and you feel a sharp burning sensation in your head!") - user.custom_emote(AUDIBLE_MESSAGE, "screams in horror!") - playsound(user, 'sound/hallucinations/far_noise.ogg', 40, 1) - user.drop_item() - user.visible_message("Ashes pour out of [user]'s eye sockets!") - new /obj/effect/decal/cleanable/ash(get_turf(user)) - E.removed(user) - qdel(E) - H.adjustBrainLoss(50, 55) - H.hallucination += 20 - return - else - to_chat(user, "You can see... everything!") - visible_message("[user] stares into [src], their eyes glazing over.") - - user.teleop = user.ghostize(1) - announce_ghost_joinleave(user.teleop, 1, "You feel that they used a powerful artifact to [pick("invade","disturb","disrupt","infest","taint","spoil","blight")] this place with their presence.") - return diff --git a/code/modules/spell_system/artifacts/storage/closets/artifact_closet.dm b/code/modules/spell_system/artifacts/storage/closets/artifact_closet.dm deleted file mode 100644 index d7979d82876..00000000000 --- a/code/modules/spell_system/artifacts/storage/closets/artifact_closet.dm +++ /dev/null @@ -1,15 +0,0 @@ -/obj/structure/closet/wizard - name = "artifact closet" - desc = "a special lead lined closet used to hold artifacts of immense power." - icon = 'icons/obj/closet.dmi' - icon_state = "acloset" - icon_closed = "acloset" - icon_opened = "aclosetopen" - -/obj/structure/closet/wizard/Initialize() - . = ..() - var/obj/structure/bigDelivery/package = new /obj/structure/bigDelivery(get_turf(src)) - package.wrapped = src - package.examtext = "Imported straight from the Wizard Academy. Do not lose the contents or suffer a demerit." - src.forceMove(package) - package.update_icon() \ No newline at end of file diff --git a/code/modules/spell_system/artifacts/storage/closets/scrying_S.dm b/code/modules/spell_system/artifacts/storage/closets/scrying_S.dm deleted file mode 100644 index 0e077227956..00000000000 --- a/code/modules/spell_system/artifacts/storage/closets/scrying_S.dm +++ /dev/null @@ -1,8 +0,0 @@ -/obj/structure/closet/wizard/scrying - 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." - -/obj/structure/closet/wizard/scrying/fill() - ..() - new /obj/item/scrying(src) - new /obj/item/contract/wizard/xray(src) \ No newline at end of file diff --git a/code/modules/spell_system/artifacts/storage/closets/soul_shards_S.dm b/code/modules/spell_system/artifacts/storage/closets/soul_shards_S.dm deleted file mode 100644 index d469e1fd302..00000000000 --- a/code/modules/spell_system/artifacts/storage/closets/soul_shards_S.dm +++ /dev/null @@ -1,8 +0,0 @@ -/obj/structure/closet/wizard/souls - name = "soul shard belt" - 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. This also includes the spell Artificer, used to create the shells used in construct creation." - -/obj/structure/closet/wizard/souls/fill() - ..() - new /obj/item/contract/boon/wizard/artificer(src) - new /obj/item/storage/belt/soulstone/full(src) \ No newline at end of file diff --git a/code/modules/spell_system/artifacts/storage/closets/wizard_voidsuit_S.dm b/code/modules/spell_system/artifacts/storage/closets/wizard_voidsuit_S.dm deleted file mode 100644 index 5c644acc1d3..00000000000 --- a/code/modules/spell_system/artifacts/storage/closets/wizard_voidsuit_S.dm +++ /dev/null @@ -1,8 +0,0 @@ -/obj/structure/closet/wizard/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." - -/obj/structure/closet/wizard/armor/fill() - ..() - new /obj/item/clothing/suit/space/void/wizard(src) - new /obj/item/clothing/head/helmet/space/void/wizard(src) \ No newline at end of file diff --git a/code/modules/spell_system/contracts/acadamy/acadamy_contracts.dm b/code/modules/spell_system/contracts/acadamy/acadamy_contracts.dm deleted file mode 100644 index a37ea95a4bb..00000000000 --- a/code/modules/spell_system/contracts/acadamy/acadamy_contracts.dm +++ /dev/null @@ -1,2 +0,0 @@ -/obj/item/contract/wizard //contracts that involve making a deal with the Wizard Acadamy (or NON PLAYERS) - contract_master = "\improper Wizard Academy" \ No newline at end of file diff --git a/code/modules/spell_system/contracts/acadamy/xray_vision.dm b/code/modules/spell_system/contracts/acadamy/xray_vision.dm deleted file mode 100644 index 7df2385ec9e..00000000000 --- a/code/modules/spell_system/contracts/acadamy/xray_vision.dm +++ /dev/null @@ -1,15 +0,0 @@ -/obj/item/contract/wizard/xray - name = "xray vision contract" - desc = "This contract is almost see-through..." - color = "#339900" - -/obj/item/contract/wizard/xray/contract_effect(mob/user as mob) - ..() - if (!(XRAY in user.mutations)) - user.mutations.Add(XRAY) - user.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS) - user.see_in_dark = 8 - user.see_invisible = SEE_INVISIBLE_LEVEL_TWO - to_chat(user, "The walls suddenly disappear.") - return 1 - return 0 \ No newline at end of file diff --git a/code/modules/spell_system/contracts/boon/artificer.dm b/code/modules/spell_system/contracts/boon/artificer.dm deleted file mode 100644 index 3ac47b5308c..00000000000 --- a/code/modules/spell_system/contracts/boon/artificer.dm +++ /dev/null @@ -1,4 +0,0 @@ -/obj/item/contract/boon/wizard/artificer - name = "artificer contract" - path = /spell/aoe_turf/conjure/construct - desc = "This contract has a passage dedicated to an entity known as 'Nar-Sie'" \ No newline at end of file diff --git a/code/modules/spell_system/contracts/boon/boon_contracts.dm b/code/modules/spell_system/contracts/boon/boon_contracts.dm deleted file mode 100644 index 304a5b15eb3..00000000000 --- a/code/modules/spell_system/contracts/boon/boon_contracts.dm +++ /dev/null @@ -1,30 +0,0 @@ -/obj/item/contract/boon - name = "boon contract" - desc = "this contract grants you a boon for signing it." - var/path - -/obj/item/contract/boon/New(var/newloc, var/new_path) - ..(newloc) - if(new_path) - path = new_path - var/item_name = "" - if(ispath(path,/obj)) - var/obj/O = path - item_name = initial(O.name) - else if(ispath(path,/spell)) - var/spell/S = path - item_name = initial(S.name) - name = "[item_name] contract" - -/obj/item/contract/boon/contract_effect(mob/user as mob) - ..() - if(ispath(path,/spell)) - user.add_spell(new path) - return 1 - else if(ispath(path,/obj)) - new path(get_turf(user.loc)) - playsound(get_turf(usr),'sound/effects/phasein.ogg',50,1) - return 1 - -/obj/item/contract/boon/wizard - contract_master = "\improper Wizard Academy" \ No newline at end of file diff --git a/code/modules/spell_system/contracts/boon/charge.dm b/code/modules/spell_system/contracts/boon/charge.dm deleted file mode 100644 index 6fe93a4b274..00000000000 --- a/code/modules/spell_system/contracts/boon/charge.dm +++ /dev/null @@ -1,4 +0,0 @@ -/obj/item/contract/boon/wizard/charge - name = "charge contract" - path = /spell/aoe_turf/charge - desc = "This contract is made of 100% post-consumer wizard." \ No newline at end of file diff --git a/code/modules/spell_system/contracts/boon/fireball.dm b/code/modules/spell_system/contracts/boon/fireball.dm deleted file mode 100644 index b405c021fbe..00000000000 --- a/code/modules/spell_system/contracts/boon/fireball.dm +++ /dev/null @@ -1,4 +0,0 @@ -/obj/item/contract/boon/wizard/fireball - name = "fireball contract" - path = /spell/targeted/projectile/dumbfire/fireball - desc = "This contract feels warm to the touch." \ No newline at end of file diff --git a/code/modules/spell_system/contracts/boon/force_wall.dm b/code/modules/spell_system/contracts/boon/force_wall.dm deleted file mode 100644 index 9b09c2989d7..00000000000 --- a/code/modules/spell_system/contracts/boon/force_wall.dm +++ /dev/null @@ -1,5 +0,0 @@ -/obj/item/contract/boon/wizard/forcewall - name = "forcewall contract" - path = /spell/aoe_turf/conjure/forcewall - contract_master = "\improper Mime Federation" - desc = "This contract has a dedication to mimes everywhere at the top." \ No newline at end of file diff --git a/code/modules/spell_system/contracts/boon/gestalt.dm b/code/modules/spell_system/contracts/boon/gestalt.dm deleted file mode 100644 index fe2716dc18c..00000000000 --- a/code/modules/spell_system/contracts/boon/gestalt.dm +++ /dev/null @@ -1,4 +0,0 @@ -/obj/item/contract/boon/wizard/gestalt - name = "conjure gestalt contract" - path = /spell/aoe_turf/conjure/grove/gestalt - desc = "This contract is a druid's favorite." \ No newline at end of file diff --git a/code/modules/spell_system/contracts/boon/knock.dm b/code/modules/spell_system/contracts/boon/knock.dm deleted file mode 100644 index b130aae802e..00000000000 --- a/code/modules/spell_system/contracts/boon/knock.dm +++ /dev/null @@ -1,4 +0,0 @@ -/obj/item/contract/boon/wizard/knock - name = "knock contract" - path = /spell/aoe_turf/knock - desc = "This contract is hard to hold still." \ No newline at end of file diff --git a/code/modules/spell_system/contracts/boon/mindswap.dm b/code/modules/spell_system/contracts/boon/mindswap.dm deleted file mode 100644 index a2f985ce08e..00000000000 --- a/code/modules/spell_system/contracts/boon/mindswap.dm +++ /dev/null @@ -1,4 +0,0 @@ -/obj/item/contract/boon/wizard/mindswap - name = "mindswap contract" - path = /spell/targeted/mind_transfer - desc = "This contract looks ragged and torn." \ No newline at end of file diff --git a/code/modules/spell_system/contracts/boon/smoke.dm b/code/modules/spell_system/contracts/boon/smoke.dm deleted file mode 100644 index d3cda8dc7cb..00000000000 --- a/code/modules/spell_system/contracts/boon/smoke.dm +++ /dev/null @@ -1,4 +0,0 @@ -/obj/item/contract/boon/wizard/smoke - name = "smoke contract" - path = /spell/aoe_turf/smoke - desc = "This contract smells as dank as they come." \ No newline at end of file diff --git a/code/modules/spell_system/contracts/boon/statue.dm b/code/modules/spell_system/contracts/boon/statue.dm deleted file mode 100644 index 4a33f7d16d0..00000000000 --- a/code/modules/spell_system/contracts/boon/statue.dm +++ /dev/null @@ -1,4 +0,0 @@ -/obj/item/contract/boon/wizard/statue - name = "flesh to stone contract" - path = /spell/targeted/flesh_to_stone - desc = "This contract is truly petrifying." \ No newline at end of file diff --git a/code/modules/spell_system/contracts/contracts.dm b/code/modules/spell_system/contracts/contracts.dm deleted file mode 100644 index 4e0fb70ad9b..00000000000 --- a/code/modules/spell_system/contracts/contracts.dm +++ /dev/null @@ -1,41 +0,0 @@ -/obj/item/contract - name = "contract" - desc = "written in the blood of some unfortunate fellow." - icon = 'icons/mob/screen/spells.dmi' - icon_state = "master_open" - - var/contract_master = null - var/list/contract_spells = list(/spell/contract/reward,/spell/contract/punish,/spell/contract/return_master) - -/obj/item/contract/attack_self(mob/user as mob) - if(contract_master == null) - to_chat(user, "You bind the contract to your soul, making you the recipient of whatever poor fool's soul that decides to contract with you.") - contract_master = user - return - - if(contract_master == user) - to_chat(user, "You can't contract with yourself!") - return - - if(iscultist(user)) - to_chat(user, "Your soul already belongs to other powers!") - return - - var/ans = alert(user,"The contract clearly states that signing this contract will bind your soul to \the [contract_master]. Are you sure you want to continue?","[src]","Yes","No") - - if(ans == "Yes") - user.visible_message("\The [user] signs the contract, their body glowing a deep yellow.") - if(!src.contract_effect(user)) - user.visible_message("\The [src] visibly rejects \the [user], erasing their signature from the line.") - return - user.visible_message("\The [src] disappears with a flash of light.") - if(contract_spells.len && istype(contract_master,/mob/living)) //if it aint text its probably a mob or another user - var/mob/living/M = contract_master - for(var/spell_type in contract_spells) - M.add_spell(new spell_type(user), "const_spell_ready") - log_and_message_admins("signed their soul over to \the [contract_master] using \the [src].", user) - qdel(src) - -/obj/item/contract/proc/contract_effect(mob/user as mob) - to_chat(user, "You've signed your soul over to \the [contract_master] and with that your unbreakable vow of servitude begins.") - return 1 \ No newline at end of file diff --git a/code/modules/spell_system/contracts/wizard/apprentice.dm b/code/modules/spell_system/contracts/wizard/apprentice.dm deleted file mode 100644 index a2e7f1686ca..00000000000 --- a/code/modules/spell_system/contracts/wizard/apprentice.dm +++ /dev/null @@ -1,24 +0,0 @@ -/obj/item/contract/apprentice - name = "apprentice wizarding contract" - desc = "A wizarding school contract for those who want to sign their soul for a piece of the magic pie." - color = "#993300" - var/list/additional_spells = list() - -/obj/item/contract/apprentice/contract_effect(mob/user) - if(user.mind.assigned_role == "Apprentice") - to_chat(user, SPAN_WARNING("You are already a wizarding apprentice!")) - return FALSE - if(wizards.add_antagonist_mind(user.mind, TRUE, "Apprentice", "You are an apprentice! Your job is to learn the wizarding arts!")) - user.mind.assigned_role = "Apprentice" - to_chat(user, SPAN_NOTICE("With the signing of this paper you agree to become \the [contract_master]'s apprentice in the art of wizardry.")) - user.faction = "Space Wizard" - wizards.add_antagonist_mind(user.mind, TRUE) - var/obj/item/spellbook/student/S = new /obj/item/spellbook/student(get_turf(user)) - for(var/additional_spell in additional_spells) - S.spellbook.spells[additional_spell] = additional_spells[additional_spell] - user.put_in_hands(S) - user.add_spell(new /spell/noclothes) - if(contract_master) - user.add_spell(new /spell/contract/return_master(contract_master), "const_spell_ready") - return TRUE - return FALSE \ No newline at end of file diff --git a/code/modules/spell_system/spellbook/spellbook.dm b/code/modules/spell_system/spellbook/spellbook.dm deleted file mode 100644 index 1f07823f581..00000000000 --- a/code/modules/spell_system/spellbook/spellbook.dm +++ /dev/null @@ -1,256 +0,0 @@ -#define LOCKED 2 -#define CAN_MAKE_CONTRACTS 4 - -var/list/artefact_feedback = list(/obj/structure/closet/wizard/armor = "HS", - /obj/item/gun/energy/staff/focus = "MF", - /obj/item/monster_manual = "MA", - /obj/item/contract/apprentice = "CP", - /obj/item/apprentice_pebble = "AP", - /obj/structure/closet/wizard/souls = "SS", - /obj/structure/closet/wizard/scrying = "SO", - /obj/item/teleportation_scroll = "TS", - /obj/item/gun/energy/staff = "ST", - /obj/item/gun/energy/staff/animate = "SA", - /obj/item/melee/energy/wizard = "WS", - /obj/item/gun/energy/staff/chaos = "SC", - /obj/item/storage/belt/wands/full = "WB") - -/obj/item/spellbook - name = "master spell book" - desc = "The legendary book of spells of the wizard." - icon = 'icons/obj/wizard.dmi' - icon_state = "spellbook" - throw_speed = 1 - throw_range = 5 - w_class = ITEMSIZE_SMALL - slot_flags = SLOT_BELT - var/uses = 1 - var/temp = null - var/datum/spellbook/spellbook - var/spellbook_type = /datum/spellbook //for spawning specific spellbooks. - -/obj/item/spellbook/Initialize() - . = ..() - set_spellbook(spellbook_type) - -/obj/item/spellbook/proc/set_spellbook(var/type) - if(spellbook) - qdel(spellbook) - spellbook = new type() - uses = spellbook.max_uses - name = spellbook.name - desc = spellbook.desc - -/obj/item/spellbook/attack_self(mob/user as mob) - if(!user) - return - if(!(user.faction == "Space Wizard")) - if(istype(user, /mob/living/carbon/human)) - //Save the users active hand - var/mob/living/carbon/human/H = user - var/obj/item/organ/external/LA = H.get_organ(BP_L_ARM) - var/obj/item/organ/external/RA = H.get_organ(BP_R_ARM) - var/active_hand = H.hand - to_chat(user, "You feel unimaginable agony as your eyes pour over millenia of forbidden knowledge!") - user.show_message("[user] screams in horror!",2) - H.ChangeToHusk() - H.adjust_fire_stacks(0, H.fire_stacks) - H.IgniteMob(2) - H.updatehealth() - user.drop_item() - playsound(user, 'sound/hallucinations/i_see_you2.ogg', 100, 1) - if(active_hand) - LA.droplimb(0,DROPLIMB_BURN) - else - RA.droplimb(0,DROPLIMB_BURN) - return - else - interact(user) - -/obj/item/spellbook/interact(mob/user as mob) - var/dat = null - if(temp) - dat = "[temp]
Return" - else - dat = "

[spellbook.title]

[spellbook.title_desc]
You have [uses] spell slot[uses > 1 ? "s" : ""] left.

" - dat += "
Requires Wizard Garb
Selectable Target
Spell Charge Type: Recharge, Sacrifice, Charges

" - for(var/i in 1 to spellbook.spells.len) - var/name = "" //name of target - var/desc = "" //description of target - var/info = "" //additional information - dat += "
" - if(ispath(spellbook.spells[i],/datum/spellbook)) - var/datum/spellbook/S = spellbook.spells[i] - name = html_decode(capitalize_first_letters(initial(S.name))) - desc = initial(S.book_desc) - info = "[initial(S.max_uses)] Spell Slots" - else if(ispath(spellbook.spells[i],/obj)) - var/obj/O = spellbook.spells[i] - name = "Artefact: [capitalize_first_letters(initial(O.name))]" //because 99.99% of objects dont have capitals in them and it makes it look weird. - desc = initial(O.desc) - else if(ispath(spellbook.spells[i],/spell)) - var/spell/S = spellbook.spells[i] - name = initial(S.name) - desc = initial(S.desc) - var/testing = initial(S.spell_flags) - if(testing & NEEDSCLOTHES) - info = "W" - var/type = "" - switch(initial(S.charge_type)) - if(Sp_RECHARGE) - type = "R" - if(Sp_HOLDVAR) - type = "S" - if(Sp_CHARGES) - type = "C" - info += "[type]" - dat += "[name]" - if(length(info)) - dat += " ([info])" - dat += " ([spellbook.spells[spellbook.spells[i]]] spell slot[spellbook.spells[spellbook.spells[i]] > 1 ? "s" : "" ])" - if(spellbook.book_flags & CAN_MAKE_CONTRACTS) - dat += " Make Contract" - dat += "
[desc]
" - dat += "
" - dat += "
Re-memorize your spellbook.
" - dat += "
[spellbook.book_flags & LOCKED ? "Unlock" : "Lock"] the spellbook.
" - - var/datum/browser/spellbook_win = new(user, "spellbook", spellbook.title) - spellbook_win.set_content(dat) - spellbook_win.add_stylesheet("spellbook", 'html/browser/spellbook.css') - spellbook_win.open() - -/obj/item/spellbook/Topic(href,href_list) - ..() - - var/mob/living/carbon/human/H = usr - - if(H.stat || H.restrained()) - return - - if(!istype(H)) - return - - if(H.mind && spellbook.book_flags & LOCKED && H.mind.special_role == "apprentice") //make sure no scrubs get behind the lock - return - - if(!H.contents.Find(src)) - H << browse(null,"window=spellbook") - return - - if(href_list["lock"]) - if(spellbook.book_flags & LOCKED) - spellbook.book_flags &= ~LOCKED - else - spellbook.book_flags |= LOCKED - - if(href_list["temp"]) - temp = null - - if(href_list["path"]) - var/path = text2path(href_list["path"]) - if(uses < spellbook.spells[path]) - to_chat(usr, "You do not have enough spell slots to purchase this.") - return - uses -= spellbook.spells[path] - send_feedback(path) //feedback stuff - if(ispath(path,/datum/spellbook)) - src.set_spellbook(path) - temp = "You have chosen a new spellbook." - else - if(href_list["contract"]) - if(!(spellbook.book_flags & CAN_MAKE_CONTRACTS)) - return //no - spellbook.max_uses -= spellbook.spells[path] //no basksies - var/obj/O = new /obj/item/contract/boon(get_turf(usr),path) - temp = "You have purchased \the [O]." - else - if(ispath(path,/spell)) - temp = src.add_spell(usr,path) - else if(ispath(path, /obj/item/contract/apprentice)) - var/obj/item/contract/apprentice/A = new path(get_turf(usr)) - A.contract_master = usr - A.additional_spells = spellbook.apprentice_spells - temp = "You have purchased \a [A]." - spellbook.max_uses -= spellbook.spells[path] - playsound(get_turf(usr),'sound/effects/phasein.ogg',50,1) - usr.put_in_hands(A) - else if(ispath(path, /obj/item/apprentice_pebble)) - var/obj/item/apprentice_pebble/A = new path(get_turf(usr)) - A.contract.additional_spells = spellbook.apprentice_spells - A.contract.contract_master = usr - temp = "You have purchased \a [A]." - spellbook.max_uses -= spellbook.spells[path] - playsound(get_turf(usr),'sound/effects/phasein.ogg',50,1) - usr.put_in_hands(A) - else - var/obj/O = new path(get_turf(usr)) - usr.put_in_hands(O) - temp = "You have purchased \a [O]." - spellbook.max_uses -= spellbook.spells[path] - //finally give it a bit of an oomf - playsound(get_turf(usr),'sound/effects/phasein.ogg',50,1) - if(href_list["reset"]) - var/area/antag/wizard/A = locate() - if(usr in A.contents) - uses = spellbook.max_uses - H.spellremove() - temp = "All spells have been removed. You may now memorize a new set of spells." - feedback_add_details("wizard_spell_learned","UM") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells - else - to_chat(usr, "You must be in the wizard academy to re-memorize your spells.") - - src.interact(usr) - - -/obj/item/spellbook/proc/send_feedback(var/path) - if(ispath(path,/datum/spellbook)) - var/datum/spellbook/S = path - feedback_add_details("wizard_spell_learned","[initial(S.feedback)]") - else if(ispath(path,/spell)) - var/spell/S = path - feedback_add_details("wizard_spell_learned","[initial(S.feedback)]") - else if(ispath(path,/obj)) - feedback_add_details("wizard_spell_learned","[artefact_feedback[path]]") - - -/obj/item/spellbook/proc/add_spell(var/mob/user, var/spell_path) - for(var/spell/S in user.spell_list) - if(istype(S,spell_path)) - if(!S.can_improve()) - uses += spellbook.spells[spell_path] - return "You cannot improve the spell [S] further." - if(S.can_improve(Sp_SPEED) && S.can_improve(Sp_POWER)) - switch(alert(user, "Do you want to upgrade this spell's speed or power?", "Spell upgrade", "Speed", "Power", "Cancel")) - if("Speed") - return S.quicken_spell() - if("Power") - return S.empower_spell() - else - uses += spellbook.spells[spell_path] - return - else if(S.can_improve(Sp_POWER)) - return S.empower_spell() - else if(S.can_improve(Sp_SPEED)) - return S.quicken_spell() - - var/spell/S = new spell_path() - user.add_spell(S) - return "You learn the spell [S]" - -/datum/spellbook - var/name = "book of tomes" - var/desc = "The legendary book of spells of the wizard." - var/book_desc = "Holds information on the various tomes available to a wizard" - var/feedback = "" //doesn't need one. - var/book_flags = 0 - var/max_uses = 1 - var/title = "Book of Tomes" - var/title_desc = "This tome marks down all the available tomes for use. Choose wisely, there are no refunds." - var/list/spells = list(/datum/spellbook/standard = 1, - /datum/spellbook/cleric = 1, - /datum/spellbook/battlemage = 1, - /datum/spellbook/druid = 1, - /datum/spellbook/necromancer = 1 - ) //spell's path = cost of spell - var/list/apprentice_spells = list() // extra spells that apprentices get, based on their master's book \ No newline at end of file diff --git a/code/modules/spell_system/spellbook/variants/battlemage.dm b/code/modules/spell_system/spellbook/variants/battlemage.dm deleted file mode 100644 index 2f34dc94184..00000000000 --- a/code/modules/spell_system/spellbook/variants/battlemage.dm +++ /dev/null @@ -1,43 +0,0 @@ -/obj/item/spellbook/battlemage - spellbook_type = /datum/spellbook/battlemage - - -/datum/spellbook/battlemage - name = "battlemage's bible" - feedback = "BM" - desc = "A treatise on the use of magic in combat situation." - book_desc = "Mix physical with the mystical in head to head combat." - title = "The Art of Magical Combat" - title_desc = "Buy spells using your available spell slots. Artefacts may also be bought however their cost is permanent." - book_flags = CAN_MAKE_CONTRACTS - max_uses = 12 - - spells = list(/spell/targeted/equip_item/shield = 1, - /spell/targeted/projectile/dumbfire/fireball = 1, - /spell/targeted/projectile/magic_missile = 1, - /spell/targeted/torment = 1, - /spell/targeted/heal_target = 2, - /spell/targeted/genetic/mutate = 1, - /spell/targeted/projectile/dumbfire/stuncuff = 2, - /spell/aoe_turf/conjure/mirage = 1, - /spell/targeted/shapeshift/corrupt_form = 1, - /spell/targeted/flesh_to_stone = 1, - /spell/radiant_aura = 1, - /spell/noclothes = 1, - /obj/structure/closet/wizard/armor = 1, - /obj/item/gun/energy/staff/focus = 1, - /obj/item/gun/energy/staff/chaos = 1, - /obj/item/storage/belt/wands/full = 2, - /obj/item/melee/energy/wizard = 2, - /obj/item/monster_manual = 2, - /obj/item/contract/apprentice = 1, - /obj/item/apprentice_pebble = 2 - ) - - apprentice_spells = list( - /spell/targeted/equip_item/shield = 1, - /spell/targeted/torment = 1, - /spell/targeted/heal_target = 2, - /spell/targeted/shapeshift/corrupt_form = 1, - /obj/item/melee/energy/wizard = 2 - ) \ No newline at end of file diff --git a/code/modules/spell_system/spellbook/variants/cleric.dm b/code/modules/spell_system/spellbook/variants/cleric.dm deleted file mode 100644 index 371411d3c50..00000000000 --- a/code/modules/spell_system/spellbook/variants/cleric.dm +++ /dev/null @@ -1,45 +0,0 @@ -/obj/item/spellbook/cleric - spellbook_type = /datum/spellbook/cleric - -/datum/spellbook/cleric - name = "cleric's tome" - feedback = "CR" - desc = "For those who do not harm, or at least feel sorry about it." - book_desc = "All about healing and control. Mobility and offense comes at a higher price but not impossible." - title = "Cleric's Tome of Healing" - title_desc = "Buy spells using your available spell slots. Artefacts may also be bought however their cost is permanent." - book_flags = CAN_MAKE_CONTRACTS - max_uses = 12 - - spells = list(/spell/targeted/heal_target = 1, - /spell/targeted/heal_target/major = 1, - /spell/targeted/heal_target/area = 1, - /spell/targeted/heal_target/sacrifice = 1, - /spell/targeted/resurrection = 2, - /spell/targeted/mend = 1, - /spell/targeted/genetic/blind = 1, - /spell/targeted/shapeshift/baleful_polymorph = 1, - /spell/targeted/flesh_to_stone = 1, - /spell/targeted/projectile/dumbfire/stuncuff = 1, - /spell/aoe_turf/knock = 1, - /spell/targeted/equip_item/holy_relic = 1, - /spell/aoe_turf/conjure/grove/sanctuary = 1, - /spell/radiant_aura = 1, - /spell/targeted/projectile/dumbfire/fireball = 2, - /spell/aoe_turf/conjure/forcewall = 1, - /spell/targeted/subjugation = 1, - /spell/targeted/mindcontrol = 2, - /obj/item/gun/energy/staff/focus = 2, - /obj/item/storage/belt/wands/full = 2, - /obj/item/poppet = 1, - /obj/item/contract/apprentice = 1, - /obj/item/apprentice_pebble = 2 - ) - - apprentice_spells = list( - /spell/targeted/heal_target = 1, - /spell/targeted/heal_target/area = 1, - /spell/targeted/resurrection = 2, - /spell/targeted/genetic/blind = 1, - /spell/radiant_aura = 1 - ) \ No newline at end of file diff --git a/code/modules/spell_system/spellbook/variants/druid.dm b/code/modules/spell_system/spellbook/variants/druid.dm deleted file mode 100644 index baa010e83b0..00000000000 --- a/code/modules/spell_system/spellbook/variants/druid.dm +++ /dev/null @@ -1,42 +0,0 @@ -/obj/item/spellbook/druid - spellbook_type = /datum/spellbook/druid - -/datum/spellbook/druid - name = "druid's leaflet" - feedback = "DL" - desc = "It smells like an air freshener." - book_desc = "Summons, nature, and a bit o' healin." - title = "Druidic Guide on how to be smug about nature" - title_desc = "Buy spells using your available spell slots. Artefacts may also be bought however their cost is permanent." - book_flags = CAN_MAKE_CONTRACTS - max_uses = 12 - - spells = list(/spell/targeted/heal_target = 1, - /spell/targeted/heal_target/sacrifice = 1, - /spell/aoe_turf/conjure/mirage = 1, - /spell/aoe_turf/conjure/summon/bats = 1, - /spell/aoe_turf/conjure/summon/bear = 1, - /spell/targeted/mend = 1, - /spell/targeted/equip_item/party_hardy = 1, - /spell/targeted/equip_item/seed = 1, - /spell/aoe_turf/disable_tech = 1, - /spell/targeted/entangle = 1, - /spell/targeted/flesh_to_stone = 1, - /spell/aoe_turf/conjure/grove/sanctuary = 1, - /spell/aoe_turf/knock = 1, - /spell/targeted/shapeshift/baleful_polymorph = 1, - /spell/targeted/flesh_to_stone = 1, - /spell/aoe_turf/conjure/golem = 1, - /obj/structure/closet/wizard/souls = 1, - /obj/item/monster_manual = 1, - /obj/item/poppet = 1, - /obj/item/contract/apprentice = 1, - /obj/item/apprentice_pebble = 2 - ) - - apprentice_spells = list( - /spell/targeted/heal_target = 1, - /spell/targeted/heal_target/sacrifice = 1, - /spell/aoe_turf/conjure/grove/sanctuary = 1, - /obj/item/poppet = 1 - ) \ No newline at end of file diff --git a/code/modules/spell_system/spellbook/variants/necromancer.dm b/code/modules/spell_system/spellbook/variants/necromancer.dm deleted file mode 100644 index ba9306a0f69..00000000000 --- a/code/modules/spell_system/spellbook/variants/necromancer.dm +++ /dev/null @@ -1,37 +0,0 @@ -/obj/item/spellbook/necromancer - spellbook_type = /datum/spellbook/necromancer - - -/datum/spellbook/necromancer - name = "necromancer's grimoire" - feedback = "NG" - desc = "A grimoire full of spells dealing with the death and the afterlife." - book_desc = "A spellbook full of dark magic dealing mostly with the afterlife." - title = "The Art of Necromancy" - title_desc = "Buy spells using your available spell slots. Artefacts may also be bought however their cost is permanent." - book_flags = CAN_MAKE_CONTRACTS - max_uses = 10 - - spells = list(/spell/targeted/projectile/dumbfire/fireball = 1, - /spell/targeted/torment = 1, - /spell/targeted/subjugation = 1, - /spell/aoe_turf/conjure/mirage = 1, - /spell/aoe_turf/conjure/summon/bats = 1, - /spell/targeted/shapeshift/corrupt_form = 1, - /spell/targeted/life_steal = 1, - /spell/targeted/raise_dead = 2, - /spell/shadow_shroud = 1, - /spell/noclothes = 1, - /obj/structure/closet/wizard/armor = 1, - /obj/structure/closet/wizard/scrying = 2, - /obj/structure/closet/wizard/souls = 1, - /obj/item/contract/apprentice = 1, - /obj/item/apprentice_pebble = 2 - ) - - apprentice_spells = list( - /spell/aoe_turf/conjure/summon/bats = 1, - /spell/targeted/shapeshift/corrupt_form = 1, - /spell/targeted/raise_dead = 2, - /obj/structure/closet/wizard/souls = 1 - ) \ No newline at end of file diff --git a/code/modules/spell_system/spellbook/variants/spatial.dm b/code/modules/spell_system/spellbook/variants/spatial.dm deleted file mode 100644 index a258ea0605b..00000000000 --- a/code/modules/spell_system/spellbook/variants/spatial.dm +++ /dev/null @@ -1,30 +0,0 @@ -/obj/item/spellbook/spatial - spellbook_type = /datum/spellbook/spatial - -/datum/spellbook/spatial - name = "spatial manual" - feedback = "SP" - desc = "You feel like this might disappear from out of under you." - book_desc = "Movement and teleportation. Run from your problems!" - title = "Manual of Spatial Transportation" - title_desc = "Buy spells using your available spell slots. Artefacts may also be bought however their cost is permanent." - book_flags = CAN_MAKE_CONTRACTS - max_uses = 10 - - spells = list(/spell/targeted/ethereal_jaunt = 1, - /spell/aoe_turf/blink = 1, - /spell/area_teleport = 1, - /spell/targeted/projectile/dumbfire/passage = 1, - /spell/mark_recall = 1, - /spell/targeted/swap = 1, - /spell/targeted/projectile/magic_missile = 2, - /spell/aoe_turf/conjure/forcewall = 1, - /spell/targeted/subjugation = 1, - /spell/aoe_turf/smoke = 1, - /spell/aoe_turf/conjure/summon/bats = 3, - /obj/structure/closet/wizard/scrying = 2, - /obj/item/storage/belt/wands/full = 4, - /obj/item/teleportation_scroll = 1, - /obj/item/contract/apprentice = 1, - /obj/item/apprentice_pebble = 2 - ) diff --git a/code/modules/spell_system/spellbook/variants/standard.dm b/code/modules/spell_system/spellbook/variants/standard.dm deleted file mode 100644 index 242e5832a3d..00000000000 --- a/code/modules/spell_system/spellbook/variants/standard.dm +++ /dev/null @@ -1,40 +0,0 @@ -/obj/item/spellbook/standard - spellbook_type = /datum/spellbook/standard - -/datum/spellbook/standard - name = "standard spellbook" - feedback = "SB" - title = "Book of Spells and Artefacts" - title_desc = "Buy spells using your available spell slots. Artefacts may also be bought however their cost is permanent." - book_desc = "A general wizard's spellbook. All its spells are easy to use but hard to master." - book_flags = CAN_MAKE_CONTRACTS - max_uses = 12 - - spells = list(/spell/targeted/projectile/magic_missile = 1, - /spell/targeted/projectile/dumbfire/fireball = 1, - /spell/aoe_turf/disable_tech = 1, - /spell/aoe_turf/smoke = 1, - /spell/targeted/genetic/blind = 1, - /spell/targeted/subjugation = 1, - /spell/targeted/mindcontrol = 2, - /spell/aoe_turf/conjure/forcewall = 1, - /spell/targeted/genetic/mutate = 1, - /spell/aoe_turf/knock = 1, - /spell/noclothes = 2, - /obj/item/gun/energy/staff = 1, - /obj/item/gun/energy/staff/focus = 1, - /obj/structure/closet/wizard/souls = 1, - /obj/structure/closet/wizard/armor = 1, - /obj/item/gun/energy/staff/animate = 1, - /obj/structure/closet/wizard/scrying = 1, - /obj/item/monster_manual = 2, - /obj/item/contract/apprentice = 1, - /obj/item/apprentice_pebble = 2 - ) - - apprentice_spells = list( - /spell/targeted/projectile/dumbfire/fireball = 1, - /spell/aoe_turf/smoke = 1, - /spell/targeted/mindcontrol = 2, - /obj/structure/closet/wizard/scrying = 1 - ) diff --git a/code/modules/spell_system/spellbook/variants/student.dm b/code/modules/spell_system/spellbook/variants/student.dm deleted file mode 100644 index 34d564eb997..00000000000 --- a/code/modules/spell_system/spellbook/variants/student.dm +++ /dev/null @@ -1,34 +0,0 @@ -/obj/item/spellbook/student - spellbook_type = /datum/spellbook/student - -/obj/item/spellbook/student/attack_self(mob/living/user as mob) - if(user.is_wizard(TRUE)) - to_chat(user, "This books is written for students, not for a true wizard like yourself!") - return - - ..() - -/datum/spellbook/student - name = "student's spellbook" - feedback = "ST" - desc = "This spell book has a sticker on it that says, 'certified for children 5 and older'." - book_desc = "This spellbook is dedicated to teaching neophytes in the ways of magic." - title = "Book of Spells and Education" - title_desc = "Buy spells using your available spell slots. Artefacts may also be bought however their cost is permanent." - book_flags = 0 - max_uses = 8 - - spells = list(/spell/targeted/mend = 1, - /spell/aoe_turf/knock = 1, - /spell/targeted/projectile/magic_missile = 1, - /spell/aoe_turf/conjure/forcewall = 1, - /spell/shadow_shroud = 1, - /spell/aoe_turf/disable_tech = 1, - /spell/targeted/entangle = 1, - /spell/aoe_turf/knock = 1, - /obj/structure/closet/wizard/armor = 1, - /obj/item/gun/energy/staff/focus = 1, - /obj/item/storage/belt/wands/full = 2, - /obj/item/monster_manual = 2, - /obj/item/contract/wizard/xray = 1 - ) diff --git a/code/modules/spell_system/spells/hand/hand.dm b/code/modules/spell_system/spells/hand/hand.dm deleted file mode 100644 index 2188bdbc808..00000000000 --- a/code/modules/spell_system/spells/hand/hand.dm +++ /dev/null @@ -1,33 +0,0 @@ -/spell/hand - var/min_range = 0 - var/list/compatible_targets = list() - var/casts = 1 - var/spell_delay = 5 - var/move_delay - var/click_delay - var/hand_state = "magic" - -/spell/hand/choose_targets(mob/user = usr) - return list(user) - -/spell/hand/cast(list/targets, mob/user) - for(var/mob/M in targets) - if(M.get_active_hand()) - to_chat(user, "You need an empty hand to cast this spell.") - return - var/obj/item/magic_hand/H = new(src) - if(!M.put_in_active_hand(H)) - qdel(H) - return - to_chat(user, "You ready the [name] spell ([casts]/[casts] charges).") - -/spell/hand/proc/valid_target(var/atom/a,var/mob/user) //we use seperate procs for our target checking for the hand spells. - var/distance = get_dist(a,user) - if((min_range && distance < min_range) || (range && distance > range)) - return 0 - if(!is_type_in_list(a,compatible_targets)) - return 0 - return 1 - -/spell/hand/proc/cast_hand(var/atom/a,var/mob/user) //same for casting. - return 1 diff --git a/code/modules/spell_system/spells/hand/hand_item.dm b/code/modules/spell_system/spells/hand/hand_item.dm deleted file mode 100644 index e78c6966114..00000000000 --- a/code/modules/spell_system/spells/hand/hand_item.dm +++ /dev/null @@ -1,56 +0,0 @@ -/*much like grab this item is used primarily for the utility it provides. -Basically: I can use it to target things where I click. I can then pass these targets to a spell and target things not using a list. -*/ - -/obj/item/magic_hand - name = "Magic Hand" - icon = 'icons/mob/screen/generic.dmi' - flags = 0 - abstract = 1 - w_class = ITEMSIZE_HUGE - icon_state = "grabbed1" - var/next_spell_time = 0 - var/spell/hand/hand_spell - var/casts = 0 - -/obj/item/magic_hand/New(var/spell/hand/S) - hand_spell = S - name = "[name] ([S.name])" - casts = S.casts - icon_state = S.hand_state - -/obj/item/magic_hand/attack() //can't be used to actually bludgeon things - return 1 - -/obj/item/magic_hand/afterattack(atom/A, mob/living/user) - if(!hand_spell) //no spell? Die. - user.drop_from_inventory(src) - - if(!hand_spell.valid_target(A,user)) - return - if(world.time < next_spell_time) - to_chat(user, "The spell isn't ready yet!") - return - - if(hand_spell.cast_hand(A,user)) - next_spell_time = world.time + hand_spell.spell_delay - casts-- - if(hand_spell.move_delay) - user.setMoveCooldown(hand_spell.move_delay) - if(hand_spell.click_delay) - user.setClickCooldown(hand_spell.move_delay) - if(!casts) - user.drop_from_inventory(src) - return - to_chat(user, "[casts]/[hand_spell.casts] charges left.") - -/obj/item/magic_hand/throw_at() //no throwing pls - usr.drop_from_inventory(src) - -/obj/item/magic_hand/dropped() //gets deleted on drop - loc = null - qdel(src) - -/obj/item/magic_hand/Destroy() //better save than sorry. - hand_spell = null - return ..() diff --git a/code/modules/spell_system/spells/spell_code.dm b/code/modules/spell_system/spells/spell_code.dm index f05078b7b06..92b5c997944 100644 --- a/code/modules/spell_system/spells/spell_code.dm +++ b/code/modules/spell_system/spells/spell_code.dm @@ -21,7 +21,7 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now var/holder_var_type = "bruteloss" //only used if charge_type equals to "holder_var" var/holder_var_amount = 20 //same. The amount adjusted with the mob's var when the spell is used - var/spell_flags = NEEDSCLOTHES + var/spell_flags var/invocation = "HURP DURP" //what is uttered when the wizard casts the spell var/invocation_type = SpI_NONE //can be none, whisper, shout, and emote var/range = 7 //the range of the spell; outer radius for aoe spells @@ -231,11 +231,6 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now to_chat(user, "Mmmf mrrfff!") return 0 - var/spell/noclothes/spell = locate() in user.spell_list - if((spell_flags & NEEDSCLOTHES) && !(spell && istype(spell)) && holder == user)//clothes check - if(!user.wearing_wiz_garb()) - return 0 - return 1 /spell/proc/check_charge(var/skipcharge, mob/user) diff --git a/code/modules/spell_system/spells/spell_list/others/area/blind.dm b/code/modules/spell_system/spells/spell_list/others/area/blind.dm deleted file mode 100644 index 868dd539446..00000000000 --- a/code/modules/spell_system/spells/spell_list/others/area/blind.dm +++ /dev/null @@ -1,31 +0,0 @@ -/spell/targeted/genetic/blind - name = "Blind" - desc = "This spell inflicts a target with temporary blindness." - feedback = "BD" - disabilities = 1 - duration = 300 - cast_sound = 'sound/magic/Blind.ogg' - - charge_max = 300 - - spell_flags = 0 - invocation = "STI KALY" - invocation_type = SpI_WHISPER - message = "Your eyes cry out in pain!" - level_max = list(Sp_TOTAL = 3, Sp_SPEED = 1, Sp_POWER = 3) - cooldown_min = 50 - - range = 7 - max_targets = 0 - - amt_eye_blind = 10 - amt_eye_blurry = 20 - - hud_state = "wiz_blind" - -/spell/targeted/genetic/blind/empower_spell() - if(!..()) - return 0 - duration += 100 - - return "[src] will now blind for a longer period of time." \ No newline at end of file diff --git a/code/modules/spell_system/spells/spell_list/others/area/disable_tech.dm b/code/modules/spell_system/spells/spell_list/others/area/disable_tech.dm index e3a3f91f8b0..a4dba12eee6 100644 --- a/code/modules/spell_system/spells/spell_list/others/area/disable_tech.dm +++ b/code/modules/spell_system/spells/spell_list/others/area/disable_tech.dm @@ -3,7 +3,6 @@ desc = "This spell disables all weapons, cameras and most other technology in range." feedback = "DT" charge_max = 400 - spell_flags = NEEDSCLOTHES invocation = "NEC CANTIO" invocation_type = SpI_SHOUT selection_type = "range" diff --git a/code/modules/spell_system/spells/spell_list/others/area/smoke.dm b/code/modules/spell_system/spells/spell_list/others/area/smoke.dm index 1a3ea01b839..283fa60cae9 100644 --- a/code/modules/spell_system/spells/spell_list/others/area/smoke.dm +++ b/code/modules/spell_system/spells/spell_list/others/area/smoke.dm @@ -1,6 +1,6 @@ /spell/aoe_turf/smoke name = "Smoke" - desc = "This spell spawns a cloud of choking smoke at your location and does not require wizard garb." + desc = "This spell spawns a cloud of choking smoke at your location." feedback = "SM" school = "conjuration" charge_max = 120 diff --git a/code/modules/spell_system/spells/spell_list/others/contracts/contract_spells.dm b/code/modules/spell_system/spells/spell_list/others/contracts/contract_spells.dm deleted file mode 100644 index 8871e753ed1..00000000000 --- a/code/modules/spell_system/spells/spell_list/others/contracts/contract_spells.dm +++ /dev/null @@ -1,31 +0,0 @@ -//These spells are given to the owner of a contract when a victim signs it. -//As such they are REALLY REALLY powerful (because the victim is rewarded for signing it, and signing contracts is completely voluntary) - -/spell/contract - name = "Contract Spell" - desc = "A spell perfecting the techniques of keeping a servant happy and obedient." - - school = "transmutation" - spell_flags = 0 - invocation = "none" - invocation_type = SpI_NONE - - - var/mob/subject - -/spell/contract/New(var/mob/M) - ..() - subject = M - name += " ([M.real_name])" - -/spell/contract/choose_targets() - return list(subject) - -/spell/contract/cast(mob/target,mob/user) - if(!subject) - to_chat(usr, "This spell was not properly given a target. Contact a coder.") - return null - - if(istype(target,/list)) - target = target[1] - return target \ No newline at end of file diff --git a/code/modules/spell_system/spells/spell_list/others/contracts/punish.dm b/code/modules/spell_system/spells/spell_list/others/contracts/punish.dm deleted file mode 100644 index 212bce17ad8..00000000000 --- a/code/modules/spell_system/spells/spell_list/others/contracts/punish.dm +++ /dev/null @@ -1,16 +0,0 @@ -/spell/contract/punish - name = "Punish Contractee" - desc = "A spell that sets your contracted victim ablaze." - - charge_max = 300 - cooldown_min = 100 - - hud_state = "gen_immolate" - -/spell/contract/punish/cast(mob/living/target,mob/user) - target = ..(target,user) - if(!target) - return - - to_chat(target, "Magical energies surround you, immolating you in a furious fashion!") - target.IgniteMob(15) \ No newline at end of file diff --git a/code/modules/spell_system/spells/spell_list/others/contracts/reward.dm b/code/modules/spell_system/spells/spell_list/others/contracts/reward.dm deleted file mode 100644 index fd289767d44..00000000000 --- a/code/modules/spell_system/spells/spell_list/others/contracts/reward.dm +++ /dev/null @@ -1,17 +0,0 @@ -/spell/contract/reward - name = "Extinguish Contractee" - desc = "A spell that extinguishes your contractee from flames." - - charge_max = 300 - cooldown_min = 100 - - hud_state = "wiz_jaunt_old" - -/spell/contract/reward/cast(mob/living/target,mob/user) - target = ..(target,user) - if(!target) - return - - if(target.on_fire && target.fire_stacks > 0) - to_chat(target, "Magical energies surround you, putting out all your flames.") - target.ExtinguishMobCompletely() \ No newline at end of file diff --git a/code/modules/spell_system/spells/spell_list/others/generic/baleful_polymorph.dm b/code/modules/spell_system/spells/spell_list/others/generic/baleful_polymorph.dm deleted file mode 100644 index 9b746d1595b..00000000000 --- a/code/modules/spell_system/spells/spell_list/others/generic/baleful_polymorph.dm +++ /dev/null @@ -1,30 +0,0 @@ -/spell/targeted/shapeshift/baleful_polymorph - name = "Baleful Polymorth" - desc = "This spell transforms its target into a small, furry animal. Those practiced in the high arcane arts can block this spell with ease, however." - feedback = "BP" - possible_transformations = list(/mob/living/simple_animal/lizard,/mob/living/simple_animal/rat,/mob/living/simple_animal/corgi, /mob/living/simple_animal/cat) - - share_damage = 0 - invocation = "Yo'balada!" - invocation_type = SpI_SHOUT - spell_flags = NEEDSCLOTHES | SELECTABLE - range = 3 - duration = 150 //15 seconds. - cooldown_min = 300 //30 seconds - - level_max = list(Sp_TOTAL = 2, Sp_SPEED = 2, Sp_POWER = 2) - - newVars = list("health" = 50, "maxHealth" = 50) - - protected_roles = list("Wizard") - - hud_state = "wiz_poly" - - -/spell/targeted/shapeshift/baleful_polymorph/empower_spell() - if(!..()) - return 0 - - duration += 50 - - return "Your target will now stay in their polymorphed form for [duration/10] seconds." \ No newline at end of file diff --git a/code/modules/spell_system/spells/spell_list/others/generic/entangle.dm b/code/modules/spell_system/spells/spell_list/others/generic/entangle.dm deleted file mode 100644 index 78d582eb7f2..00000000000 --- a/code/modules/spell_system/spells/spell_list/others/generic/entangle.dm +++ /dev/null @@ -1,55 +0,0 @@ -/spell/targeted/entangle - name = "Entangle" - desc = "This spell creates vines that immediately entangle a nearby victim." - feedback = "ET" - school = "conjuration" - charge_max = 600 - spell_flags = NEEDSCLOTHES | SELECTABLE | IGNOREPREV - invocation = "BU EKEL 'INAS" - invocation_type = SpI_SHOUT - range = 3 - max_targets = 1 - cast_sound = 'sound/species/diona/gestalt_split.ogg' - - level_max = list(Sp_TOTAL = 2, Sp_SPEED = 2, Sp_POWER = 2) - cooldown_min = 300 - duration = 30 - - hud_state = "wiz_entangle" - var/datum/seed/seed - -/spell/targeted/entangle/New() - ..() - seed = new() - seed.set_trait(TRAIT_PLANT_ICON,"flower") - seed.set_trait(TRAIT_PRODUCT_ICON,"flower2") - seed.set_trait(TRAIT_PRODUCT_COLOUR,"#4d4dff") - seed.set_trait(TRAIT_SPREAD,2) - seed.name = "heirlooms" - seed.seed_name = "heirloom" - seed.display_name = "vines" - seed.chems = list(/decl/reagent/nutriment = list(1, 20)) - -/spell/targeted/entangle/cast(var/list/targets) - for(var/mob/M in targets) - var/turf/T = get_turf(M) - var/obj/effect/plant/single/P = new(T, seed) - P.can_buckle = list(/mob/living) - P.health = P.max_health - P.mature_time = 0 - P.process() - - P.buckle(M) - M.set_dir(pick(cardinal)) - - var/obj/item/handcuffs/cable/green/vines/V = new /obj/item/handcuffs/cable/green/vines(get_turf(M)) - V.place_handcuffs(M, instant = TRUE) - M.visible_message(SPAN_DANGER("[P] appear from the floor, spinning tightly around \the [M]!")) - -/spell/targeted/entangle/empower_spell() - if(!..()) - return FALSE - - max_targets++ - - return "This spell will now entangle [max_targets] people at the same time." diff --git a/code/modules/spell_system/spells/spell_list/others/generic/flesh_to_stone.dm b/code/modules/spell_system/spells/spell_list/others/generic/flesh_to_stone.dm deleted file mode 100644 index d8ad6d0dccf..00000000000 --- a/code/modules/spell_system/spells/spell_list/others/generic/flesh_to_stone.dm +++ /dev/null @@ -1,24 +0,0 @@ -/spell/targeted/flesh_to_stone - name = "Flesh to Stone" - desc = "This spell turns a single person into an inert statue for a long period of time." - feedback = "FS" - school = "transmutation" - charge_max = 200 - spell_flags = NEEDSCLOTHES | SELECTABLE - blacklisted_mob_types = list(/mob/living/heavy_vehicle) - range = 5 - max_targets = 1 - invocation = "STAUN EI" - invocation_type = SpI_SHOUT - amt_stunned = 5 - cooldown_min = 100 - cast_sound = 'sound/magic/FleshToStone.ogg' - - hud_state = "wiz_statue" - -/spell/targeted/flesh_to_stone/cast(var/list/targets, mob/user) - ..() - for(var/mob/living/target in targets) - new /obj/structure/closet/statue(target.loc, target) - target.visible_message("[target] turns into a statue!", "Your body turns into stone and you find yourself paralyzed!") - return \ No newline at end of file diff --git a/code/modules/spell_system/spells/spell_list/others/generic/heal_target_major.dm b/code/modules/spell_system/spells/spell_list/others/generic/heal_target_major.dm index 51d02f9de5a..ad0943a799f 100644 --- a/code/modules/spell_system/spells/spell_list/others/generic/heal_target_major.dm +++ b/code/modules/spell_system/spells/spell_list/others/generic/heal_target_major.dm @@ -3,7 +3,7 @@ desc = "A spell used to fix others that cannot be fixed with regular medicine." feedback = "CM" charge_max = 300 - spell_flags = INCLUDEUSER | SELECTABLE | NEEDSCLOTHES + spell_flags = INCLUDEUSER | SELECTABLE invocation = "Borv Di'Nath" range = 1 level_max = list(Sp_TOTAL = 2, Sp_SPEED = 1, Sp_POWER = 1) diff --git a/code/modules/spell_system/spells/spell_list/others/generic/heal_target_sacrifice.dm b/code/modules/spell_system/spells/spell_list/others/generic/heal_target_sacrifice.dm deleted file mode 100644 index 2876c66bea9..00000000000 --- a/code/modules/spell_system/spells/spell_list/others/generic/heal_target_sacrifice.dm +++ /dev/null @@ -1,32 +0,0 @@ -/spell/targeted/heal_target/sacrifice - name = "Sacrifice" - desc = "This spell heals immensily. For a price." - feedback = "SF" - spell_flags = SELECTABLE - invocation = "Ei'Nath Borv Di'Nath" - charge_type = Sp_HOLDVAR - holder_var_type = "bruteloss" - holder_var_amount = 75 - level_max = list(Sp_TOTAL = 1, Sp_SPEED = 0, Sp_POWER = 1) - - amt_dam_brute = -50 - amt_dam_fire = -50 - amt_dam_oxy = -50 - amt_dam_tox = -50 - amt_organ = -15 - - hud_state = "gen_dissolve" - -/spell/targeted/heal_target/sacrifice/empower_spell() - if(!..()) - return 0 - - holder_var_amount *= 2 - - amt_dam_brute *= 2 - amt_dam_fire *= 2 - amt_dam_oxy *= 2 - amt_dam_tox *= 2 - amt_organ *= 2 - - return "You will now heal twice as much, but take twice as much damage. It will probably kill you." \ No newline at end of file diff --git a/code/modules/spell_system/spells/spell_list/others/generic/mend.dm b/code/modules/spell_system/spells/spell_list/others/generic/mend.dm index 16ff4953913..1e4d736888b 100644 --- a/code/modules/spell_system/spells/spell_list/others/generic/mend.dm +++ b/code/modules/spell_system/spells/spell_list/others/generic/mend.dm @@ -2,7 +2,7 @@ name = "Mend Wounds" desc = "This spell heals internal wounds and broken bones." feedback = "MW" - spell_flags = INCLUDEUSER | SELECTABLE | NEEDSCLOTHES + spell_flags = INCLUDEUSER | SELECTABLE invocation = "Ges'undh'eit" invocation_type = SpI_SHOUT diff --git a/code/modules/spell_system/spells/spell_list/others/generic/mind_transfer.dm b/code/modules/spell_system/spells/spell_list/others/generic/mind_transfer.dm deleted file mode 100644 index 598a5d2ab6b..00000000000 --- a/code/modules/spell_system/spells/spell_list/others/generic/mind_transfer.dm +++ /dev/null @@ -1,89 +0,0 @@ -/spell/targeted/mind_transfer - name = "Mind Transfer" - desc = "This spell allows the user to switch bodies with a target." - feedback = "MT" - school = "transmutation" - charge_max = 600 - spell_flags = 0 - invocation = "GIN'YU CAPAN" - invocation_type = SpI_WHISPER - max_targets = 1 - range = 1 - level_max = list(Sp_TOTAL = 4, Sp_SPEED = 4, Sp_POWER = 2) - cooldown_min = 200 //100 deciseconds reduction per rank - compatible_mobs = list(/mob/living/carbon/human) //which types of mobs are affected by the spell. NOTE: change at your own risk - cast_sound = 'sound/magic/MandSwap.ogg' - - // TODO: Update to new antagonist system. - var/list/protected_roles = list("Wizard","Changeling","Cultist", "Vampire") //which roles are immune to the spell - var/msg_wait = 500 //how long in deciseconds it waits before telling that body doesn't feel right or mind swap robbed of a spell - amt_paralysis = 20 //how much the victim is paralysed for after the spell - - hud_state = "wiz_mindswap" - -/spell/targeted/mind_transfer/cast(list/targets, mob/user) - ..() - - for(var/mob/living/target in targets) - if(target.stat == DEAD) - to_chat(user, "You didn't study necromancy back at the Space Wizard Federation academy.") - continue - - if(!target.key || !target.mind) - to_chat(user, "They appear to be catatonic. Not even magic can affect their vacant mind.") - continue - - if(target.mind.special_role in protected_roles) - to_chat(user, "Their mind is resisting your spell.") - continue - - var/mob/living/victim = target//The target of the spell whos body will be transferred to. - var/mob/caster = user//The wizard/whomever doing the body transferring. - - //MIND TRANSFER BEGIN - if(caster.mind.special_verbs.len)//If the caster had any special verbs, remove them from the mob verb list. - for(var/V in caster.mind.special_verbs)//Since the caster is using an object spell system, this is mostly moot. - caster.verbs -= V//But a safety nontheless. - - if(victim.mind.special_verbs.len)//Now remove all of the victim's verbs. - for(var/V in victim.mind.special_verbs) - victim.verbs -= V - - var/mob/abstract/observer/ghost = victim.ghostize(0) - LAZYADD(ghost.spell_list, victim.spell_list) //If they have spells, transfer them. Now we basically have a backup mob. - - caster.mind.transfer_to(victim) - for(var/spell/S in victim.spell_list) - victim.remove_spell(S) //Doing it this way will allow the spell master to update accordingly and not cause bugs. - - for(var/spell/S in caster.spell_list) - victim.add_spell(S) //Now they are inside the victim's body - this also generates the HUD - caster.remove_spell(S) - - if(victim.mind.special_verbs.len)//To add all the special verbs for the original caster. - for(var/V in caster.mind.special_verbs)//Not too important but could come into play. - caster.verbs += V - - ghost.mind.transfer_to(caster) - caster.key = ghost.key //have to transfer the key since the mind was not active - for(var/spell/S in ghost.spell_list) - caster.add_spell(S) - - LAZYCLEARLIST(ghost.spell_list) - - if(caster.mind.special_verbs.len)//If they had any special verbs, we add them here. - for(var/V in caster.mind.special_verbs) - caster.verbs += V - //MIND TRANSFER END - - //Target is handled in ..(), so we handle the caster here - caster.Paralyse(amt_paralysis) - - //After a certain amount of time the victim gets a message about being in a different body. - spawn(msg_wait) - to_chat(caster, "You feel woozy and lightheaded. Your body doesn't seem like your own.") - -/spell/targeted/mind_transfer/empower_spell() - range++ - - return "You have increased the range of [src]." diff --git a/code/modules/spell_system/spells/spell_list/others/generic/mindcontrol.dm b/code/modules/spell_system/spells/spell_list/others/generic/mindcontrol.dm deleted file mode 100644 index 64a9fe846ae..00000000000 --- a/code/modules/spell_system/spells/spell_list/others/generic/mindcontrol.dm +++ /dev/null @@ -1,65 +0,0 @@ -/spell/targeted/mindcontrol - name = "Mind Bend" - desc = "Bend the mind and soul of a mortal to serve your purposes, making them your slave. You will need some way to hold them still during the process, however." - feedback = "MB" - school = "cleric" - charge_max = 10000 - spell_flags = SELECTABLE | NEEDSCLOTHES - invocation = "In'gs'oc" - invocation_type = SpI_SHOUT - range = 1 - max_targets = 1 - - cast_sound = 'sound/magic/Charge.ogg' - - hud_state = "rend_mind" - - holder_var_type = "brainloss" - holder_var_amount = 15 - - compatible_mobs = list(/mob/living/carbon/human) - -/spell/targeted/mindcontrol/cast(list/targets, mob/user) - ..() - for(var/mob/living/target in targets) - var/mob/living/carbon/human/H = target - - if(H.stat == DEAD || (H.status_flags & FAKEDEATH)) - to_chat(user, "\The [H] is dead!") - return FALSE - - if(is_special_character(H)) - to_chat(user, "\The [H]'s mind is too strong to be affected by this spell!") - return FALSE - - if(!H.mind || !H.key) - to_chat(user, "\The [H] is mindless!") - return FALSE - - var/obj/item/organ/internal/brain/F = H.internal_organs_by_name[BP_BRAIN] - - if(isnull(F)) - to_chat(user, "\The [H] is brainless!") - return FALSE - - for (var/obj/item/implant/mindshield/I in H) - if (I.implanted) - to_chat(src, "[H]'s mind is shielded against your powers!") - return FALSE - - user.visible_message("\The [user] seizes the head of \the [H] in both hands...") - to_chat(user, "You invade the mind of \the [H]!") - to_chat(H, "Your mind is invaded by the presence of \the [user]! You feel painful tendrils burrowing their way into your head!") - - if (!do_mob(user, H, 80)) - to_chat(user, "Your concentration is broken!") - return FALSE - - if(wizards.add_antagonist_mind(target.mind,1,"Wizard Slave","You are a slave to \the [user], obey them at all costs!")) - to_chat(user, "You sear through \the [H]'s mind, reshaping as you see fit and leaving them subservient to your will!") - H.mind.assigned_role = "Wizard Slave" - to_chat(H, "Your defenses have eroded away and \the [user] has made you their mindslave.") - H.faction = "Space Wizard" - wizards.add_antagonist_mind(H.mind,1) - - return TRUE diff --git a/code/modules/spell_system/spells/spell_list/others/generic/raise_dead.dm b/code/modules/spell_system/spells/spell_list/others/generic/raise_dead.dm deleted file mode 100644 index 862f3627ebd..00000000000 --- a/code/modules/spell_system/spells/spell_list/others/generic/raise_dead.dm +++ /dev/null @@ -1,48 +0,0 @@ -/spell/targeted/raise_dead - name = "Raise Dead" - desc = "This spell turns a body into a skeleton servant." - feedback = "RD" - school = "necromancy" - charge_max = 1000 - spell_flags = NEEDSCLOTHES | SELECTABLE - invocation = "RY'SY FROH YER G'RVE!" - invocation_type = SpI_SHOUT - range = 3 - max_targets = 1 - - compatible_mobs = list(/mob/living/carbon/human) - - hud_state = "wiz_skeleton" - -/spell/targeted/raise_dead/cast(list/targets, mob/user) - ..() - - for(var/mob/living/target in targets) - if(target.stat != DEAD) - to_chat(user, SPAN_WARNING("This spell can't affect the living.")) - return FALSE - - if(isundead(target)) - to_chat(user, SPAN_WARNING("This spell can't affect the undead.")) - return FALSE - - if(islesserform(target)) - to_chat(user, SPAN_WARNING("This spell can't affect this lesser creature.")) - return FALSE - - if(isipc(target)) - to_chat(user, SPAN_WARNING("This spell can't affect non-organics.")) - return FALSE - - var/mob/living/carbon/human/skeleton/F = new /mob/living/carbon/human/skeleton(get_turf(target)) - SSghostroles.add_spawn_atom("skeleton", F) - target.visible_message("\The [target] explodes in a shower of gore, a skeleton emerges from the remains!") - target.gib() - - F.master = user - F.faction = user.faction - - F.preEquipOutfit(/datum/outfit/admin/wizard/skeleton, FALSE) - F.equipOutfit(/datum/outfit/admin/wizard/skeleton, FALSE) - - return TRUE \ No newline at end of file diff --git a/code/modules/spell_system/spells/spell_list/others/generic/resurrection.dm b/code/modules/spell_system/spells/spell_list/others/generic/resurrection.dm deleted file mode 100644 index 523240283da..00000000000 --- a/code/modules/spell_system/spells/spell_list/others/generic/resurrection.dm +++ /dev/null @@ -1,62 +0,0 @@ -/spell/targeted/resurrection - name = "Resurrection" - desc = "This spell brings someone back from the gates of death." - feedback = "RES" - spell_flags = NEEDSCLOTHES | SELECTABLE - invocation = "Se'id Rev' Oreh" - invocation_type = SpI_SHOUT - - school = "cleric" - - charge_max = 5000 - - cast_sound = 'sound/magic/Staff_Healing.ogg' - - hud_state = "wiz_revive" - - range = 1 - - compatible_mobs = list(/mob/living/carbon/human) - -/spell/targeted/resurrection/cast(list/targets, mob/user) - ..() - - for(var/mob/living/target in targets) - if(target.stat != DEAD && !(target.status_flags & FAKEDEATH)) - to_chat(user, "\The [target] is still alive!") - return 0 - - if(isundead(target)) - to_chat(user, "This spell can't affect the undead.") - return 0 - - if(isipc(target)) - to_chat(user, "This spell can't affect non-organics.") - return 0 - - if((world.time - target.timeofdeath) > 30 MINUTES) - to_chat(user, "\The [target]'s soul is too far away from your grasp.") - return 0 - - user.visible_message("\The [user] waves their hands over \the [target]'s body...") - - if(!do_after(user, 30, target, 0, 1)) - to_chat(user, "Your concentration is broken!") - return 0 - - for(var/mob/abstract/observer/ghost in dead_mob_list) - if(ghost.mind && ghost.mind.current == target && ghost.client) - to_chat(ghost, "Your body has been revived, Re-Enter Corpse to return to it.") - break - - to_chat(target, "Eternal rest is stolen from you, you are cast back into the world of the living!") - target.visible_message("\The [target] shudders violently!") - - if(target.status_flags & FAKEDEATH) - target.changeling_revive() - - else - target.adjustOxyLoss(-rand(15,20)) - target.revive() - - return 1 \ No newline at end of file diff --git a/code/modules/spell_system/spells/spell_list/others/generic/subjugate.dm b/code/modules/spell_system/spells/spell_list/others/generic/subjugate.dm deleted file mode 100644 index 972865dd9d7..00000000000 --- a/code/modules/spell_system/spells/spell_list/others/generic/subjugate.dm +++ /dev/null @@ -1,19 +0,0 @@ -/spell/targeted/subjugation - name = "Mind Blast" - desc = "This spell blasts a target's mind with distruptive forces, severely disorienting them. It does not require wizard garb." - - school = "transmutation" - charge_max = 250 - spell_flags = 0 - invocation = "DII ODA BAJI" - invocation_type = SpI_WHISPER - message = "You feel your mind burn, and your limbs feel unsteady as your vision wobbles severely." - - max_targets = 1 - - amt_dizziness = 150 - amt_confused = 100 - - compatible_mobs = list(/mob/living/carbon/human) - - hud_state = "wiz_subj" \ No newline at end of file diff --git a/code/modules/spell_system/spells/spell_list/others/projectile/fireball.dm b/code/modules/spell_system/spells/spell_list/others/projectile/fireball.dm deleted file mode 100644 index 5b9250f8c56..00000000000 --- a/code/modules/spell_system/spells/spell_list/others/projectile/fireball.dm +++ /dev/null @@ -1,40 +0,0 @@ -/spell/targeted/projectile/dumbfire/fireball - name = "Fireball" - desc = "This spell fires a fireball at a target and does not require wizard garb." - - proj_type = /obj/item/projectile/spell_projectile/fireball - - school = "evocation" - charge_max = 100 - spell_flags = 0 - invocation = "ONI SOMA" - invocation_type = SpI_SHOUT - range = 20 - cooldown_min = 20 //10 deciseconds reduction per rank - cast_sound = 'sound/magic/Fireball.ogg' - - spell_flags = 0 - - duration = 20 - proj_step_delay = 1 - - amt_dam_brute = 20 - amt_dam_fire = 35 - - hud_state = "wiz_fireball" - -/spell/targeted/projectile/dumbfire/fireball/prox_cast(var/list/targets, spell_holder) - for(var/mob/living/M in targets) - apply_spell_damage(M) - M.IgniteMob(2) - var/explosion_ogg = pick('sound/effects/Explosion1.ogg', 'sound/effects/Explosion2.ogg') - playsound(get_turf(spell_holder), explosion_ogg, 75, TRUE, 3) - var/datum/effect/system/explosion/E = new /datum/effect/system/explosion() - E.set_up(get_turf(spell_holder)) - E.start() - -//PROJECTILE - -/obj/item/projectile/spell_projectile/fireball - name = "fireball" - icon_state = "fireball" \ No newline at end of file diff --git a/code/modules/spell_system/spells/spell_list/others/projectile/magic_missile.dm b/code/modules/spell_system/spells/spell_list/others/projectile/magic_missile.dm deleted file mode 100644 index 726b1f54f99..00000000000 --- a/code/modules/spell_system/spells/spell_list/others/projectile/magic_missile.dm +++ /dev/null @@ -1,60 +0,0 @@ -/spell/targeted/projectile/magic_missile - name = "Magic Missile" - desc = "This spell fires several, slow moving, magic projectiles at nearby targets." - feedback = "MM" - school = "evocation" - charge_max = 300 - spell_flags = NEEDSCLOTHES - invocation = "FORTI GY AMA" - invocation_type = SpI_SHOUT - range = 7 - cooldown_min = 150 //15 deciseconds reduction per rank - cast_sound = 'sound/magic/MAGIC_MISSILE.ogg' - - max_targets = 0 - - proj_type = /obj/item/projectile/spell_projectile/seeking/magic_missile - duration = 10 - proj_step_delay = 5 - - hud_state = "wiz_mm" - - amt_paralysis = 3 - amt_stunned = 3 - - amt_dam_fire = 10 - -/spell/targeted/projectile/magic_missile/choose_prox_targets(mob/user = usr, var/atom/movable/spell_holder) - var/list/targets = ..() - for(var/mob/living/target in targets) - if(target.is_wizard()) - targets -= target - return targets - -/spell/targeted/projectile/magic_missile/prox_cast(var/list/targets, atom/spell_holder) - spell_holder.visible_message("\The [spell_holder] pops with a flash!") - for(var/mob/living/M in targets) - apply_spell_damage(M) - return - -/spell/targeted/projectile/magic_missile/empower_spell() - if(!..()) - return 0 - - if(spell_levels[Sp_POWER] == level_max[Sp_POWER]) - amt_paralysis += 2 - amt_stunned += 2 - return "[src] will now stun people for a longer duration." - amt_dam_fire += 5 - - return "[src] does more damage now." - -//PROJECTILE - -/obj/item/projectile/spell_projectile/seeking/magic_missile - name = "magic missile" - icon_state = "magicm" - - proj_trail = 1 - proj_trail_lifespan = 5 - proj_trail_icon_state = "magicmd" diff --git a/code/modules/spell_system/spells/spell_list/others/projectile/stuncuff.dm b/code/modules/spell_system/spells/spell_list/others/projectile/stuncuff.dm deleted file mode 100644 index ff6c3067629..00000000000 --- a/code/modules/spell_system/spells/spell_list/others/projectile/stuncuff.dm +++ /dev/null @@ -1,48 +0,0 @@ -/spell/targeted/projectile/dumbfire/stuncuff - name = "Stun Cuff" - desc = "This spell fires out a small curse that stuns and cuffs the target." - feedback = "SC" - proj_type = /obj/item/projectile/spell_projectile/stuncuff - - charge_type = Sp_CHARGES - charge_max = 6 - charge_counter = 6 - spell_flags = 0 - invocation = "Fu'Reai Diakan" - invocation_type = SpI_SHOUT - range = 20 - - level_max = list(Sp_TOTAL = 0, Sp_SPEED = 0, Sp_POWER = 0) - - duration = 20 - proj_step_delay = 1 - - amt_stunned = 6 - - hud_state = "wiz_cuff" - -/spell/targeted/projectile/dumbfire/stuncuff/prox_cast(var/list/targets, spell_holder) - for(var/mob/living/M in targets) - if(istype(M,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = M - var/obj/item/handcuffs/wizard/cuffs = new() - cuffs.forceMove(H) - H.handcuffed = cuffs - H.update_inv_handcuffed() - H.visible_message("Beams of light form around \the [H]'s hands!") - apply_spell_damage(M) - - -/obj/item/handcuffs/wizard - name = "beams of light" - desc = "Undescribable and unpenetrable. Or so they say." - - breakouttime = 300 //30 seconds - -/obj/item/handcuffs/wizard/dropped(var/mob/user) - ..() - qdel(src) - -/obj/item/projectile/spell_projectile/stuncuff - name = "stuncuff" - icon_state = "spell" \ No newline at end of file diff --git a/code/modules/spell_system/spells/spell_list/self/conjure/druidic_spells.dm b/code/modules/spell_system/spells/spell_list/self/conjure/druidic_spells.dm index dfc1c9f0e79..2bbbbe5be22 100644 --- a/code/modules/spell_system/spells/spell_list/self/conjure/druidic_spells.dm +++ b/code/modules/spell_system/spells/spell_list/self/conjure/druidic_spells.dm @@ -39,85 +39,4 @@ newVars = list("maxHealth" = 20 + spell_levels[Sp_POWER]*5, "health" = 20 + spell_levels[Sp_POWER]*5, "melee_damage_lower" = 10 + spell_levels[Sp_POWER], "melee_damage_upper" = 10 + spell_levels[Sp_POWER]*2) - return "Your bats are now stronger." - -/spell/aoe_turf/conjure/summon/bear - name = "Summon Bear" - desc = "This spell summons a permanent bear companion that will follow your orders." - feedback = "BR" - charge_max = 3000 - spell_flags = NEEDSCLOTHES - invocation = "REA'YO GOR DAYA!" - invocation_type = SpI_SHOUT - level_max = list(Sp_TOTAL = 4, Sp_SPEED = 0, Sp_POWER = 4) - - range = 0 - - name_summon = 1 - - summon_amt = 1 - summon_type = list(/mob/living/simple_animal/hostile/commanded/bear) - newVars = list("maxHealth" = 100, - "health" = 100, - "melee_damage_lower" = 25, - "melee_damage_upper" = 25 - ) - - hud_state = "wiz_bear" - -/spell/aoe_turf/conjure/summon/bear/before_cast() - ..() - newVars["master"] = holder //why not do this in the beginning? MIND SWITCHING. - -/spell/aoe_turf/conjure/summon/bear/empower_spell() - if(!..()) - return 0 - switch(spell_levels[Sp_POWER]) - if(1) - newVars = list("maxHealth" = 120, - "health" = 120, - "melee_damage_lower" = 30, - "melee_damage_upper" = 30, - "resistance" = 2, - "icon_state" = "bearfloor", - "icon_living" = "bearfloor", - "icon_dead" = "bearfloor_dead", - "desc" = "A large black bear." - ) - return "Your bear has been upgraded from a cub to a whelp." - if(2) - newVars = list("maxHealth" = 140, - "health" = 140, - "melee_damage_lower" = 35, - "melee_damage_upper" = 35, - "resistance" = 3, - "icon_state" = "bear", - "icon_living" = "bear", - "icon_dead" = "bear_dead", - "desc" = "A large black bear." - ) - return "Your bear has been upgraded from a whelp to an adult." - if(3) - newVars = list("maxHealth" = 180, - "health" = 180, - "melee_damage_lower" = 40, - "melee_damage_upper" = 40, - "resistance" = 4, - "icon_state" = "snowbear", - "icon_living" = "snowbear", - "icon_dead" = "snowbear_dead", - "desc" = "A large polar bear." - ) - return "Your bear has been upgraded from an adult to an alpha." - if(4) - newVars = list("maxHealth" = 250, - "health" = 250, - "melee_damage_lower" = 45, - "melee_damage_upper" = 45, - "resistance" = 5, - "icon_state" = "combatbear", - "icon_living" = "combatbear", - "icon_dead" = "combatbear_dead", - "desc" = "A large brown armored bear." - ) - return "Your bear is now worshiped as a god amongst bears." + return "Your bats are now stronger." \ No newline at end of file diff --git a/code/modules/spell_system/spells/spell_list/self/conjure/forcewall.dm b/code/modules/spell_system/spells/spell_list/self/conjure/forcewall.dm index fe7f7fc70a9..6b971694760 100644 --- a/code/modules/spell_system/spells/spell_list/self/conjure/forcewall.dm +++ b/code/modules/spell_system/spells/spell_list/self/conjure/forcewall.dm @@ -11,22 +11,8 @@ hud_state = "wiz_shield" -/spell/aoe_turf/conjure/forcewall/mime - name = "Invisible wall" - desc = "Create an invisible wall on your location." - school = "mime" - panel = "Mime" - summon_type = list(/obj/effect/forcefield/mime) - invocation_type = SpI_EMOTE - invocation = "mimes placing their hands on a flat surfacing, and pushing against it." - charge_max = 300 - cast_sound = null - - override_base = "grey" - hud_state = "mime_wall" - /obj/effect/forcefield - desc = "A space wizard's magic wall." + desc = "A strange wall that seems almost magical." name = "forcewall" icon = 'icons/effects/effects.dmi' icon_state = "m_shield" @@ -48,11 +34,6 @@ to_chat(user, "\the [src] dissipates at the touch of the \the [I].") qdel(src) -/obj/effect/forcefield/mime - icon_state = null - name = "invisible wall" - desc = "You have a bad feeling about this." - /obj/effect/forcefield/cultify() new /obj/effect/forcefield/cult(get_turf(src)) qdel(src) diff --git a/code/modules/spell_system/spells/spell_list/self/conjure/gestalt_grove.dm b/code/modules/spell_system/spells/spell_list/self/conjure/gestalt_grove.dm deleted file mode 100644 index dbbfce673f1..00000000000 --- a/code/modules/spell_system/spells/spell_list/self/conjure/gestalt_grove.dm +++ /dev/null @@ -1,16 +0,0 @@ -/spell/aoe_turf/conjure/grove/gestalt - name = "Convert Gestalt" - desc = "Converts the surrounding area into a Dionaea gestalt." - - school = "conjuration" - spell_flags = 0 - invocation_type = SpI_EMOTE - invocation = "rumbles as green alien plants grow quickly along the floor." - - charge_type = Sp_HOLDVAR - - spell_flags = Z2NOCAST | IGNOREPREV | IGNOREDENSE - summon_type = list(/turf/simulated/floor/diona) - seed_type = /datum/seed/diona - - hud_state = "wiz_diona" \ No newline at end of file diff --git a/code/modules/spell_system/spells/spell_list/self/conjure/golem.dm b/code/modules/spell_system/spells/spell_list/self/conjure/golem.dm deleted file mode 100644 index 77e41d48db2..00000000000 --- a/code/modules/spell_system/spells/spell_list/self/conjure/golem.dm +++ /dev/null @@ -1,12 +0,0 @@ -/spell/aoe_turf/conjure/golem - name = "Summon Golem Rune" - desc = "Summon a golem rune at your location, allowing you to create a servant golem with the right materials." - feedback = "SGE" - summon_type = list(/obj/effect/golemrune/wizard) - charge_max = 6000 - spell_flags = 0 - range = 0 - - cast_sound = 'sound/effects/teleport.ogg' - - hud_state = "golem" \ No newline at end of file diff --git a/code/modules/spell_system/spells/spell_list/self/conjure/grove.dm b/code/modules/spell_system/spells/spell_list/self/conjure/grove.dm deleted file mode 100644 index 2ffdd006c42..00000000000 --- a/code/modules/spell_system/spells/spell_list/self/conjure/grove.dm +++ /dev/null @@ -1,30 +0,0 @@ -/spell/aoe_turf/conjure/grove - name = "Grove" - desc = "Creates a sanctuary of nature around the wizard as well as creating a healing plant." - - spell_flags = IGNOREDENSE | IGNORESPACE | NEEDSCLOTHES | Z2NOCAST | IGNOREPREV - charge_max = 1200 - school = "conjuration" - cast_sound = 'sound/species/diona/gestalt_grow.ogg' - range = 1 - cooldown_min = 600 - - level_max = list(Sp_TOTAL = 3, Sp_SPEED = 3, Sp_POWER = 1) - - summon_amt = 47 - summon_type = list(/turf/simulated/floor/grass/alt) - var/spread = 0 - var/datum/seed/seed - var/seed_type = /datum/seed/merlin_tear - -/spell/aoe_turf/conjure/grove/New() - ..() - if(seed_type) - seed = new seed_type() - else - seed = SSplants.create_random_seed(1) - -/spell/aoe_turf/conjure/grove/before_cast() - var/turf/T = get_turf(holder) - var/obj/effect/plant/P = new(T,seed) - P.spread_chance = spread \ No newline at end of file diff --git a/code/modules/spell_system/spells/spell_list/self/conjure/plant_sanctuary.dm b/code/modules/spell_system/spells/spell_list/self/conjure/plant_sanctuary.dm deleted file mode 100644 index 816c8997a82..00000000000 --- a/code/modules/spell_system/spells/spell_list/self/conjure/plant_sanctuary.dm +++ /dev/null @@ -1,44 +0,0 @@ -/spell/aoe_turf/conjure/grove/sanctuary - name = "Sanctuary" - desc = "Creates a sanctuary of nature around the wizard as well as creating a healing plant." - feedback = "SY" - invocation = "Bo k'itan" - invocation_type = SpI_SHOUT - spell_flags = IGNOREDENSE | IGNORESPACE | NEEDSCLOTHES | Z2NOCAST | IGNOREPREV - cooldown_min = 600 - cast_sound = 'sound/species/diona/gestalt_grow.ogg' - - level_max = list(Sp_TOTAL = 3, Sp_SPEED = 3, Sp_POWER = 1) - - seed_type = /datum/seed/merlin_tear - newVars = list("name" = "sanctuary", "desc" = "This grass makes you feel comfortable. Peaceful.","blessed" = 1) - - hud_state = "wiz_grove" - -/spell/aoe_turf/conjure/grove/sanctuary/empower_spell() - if(!..()) - return 0 - - seed.set_trait(TRAIT_SPREAD,2) //make it grow. - spread = 40 - return "Your sanctuary will now grow beyond that of the grassy perimeter." - -/datum/seed/merlin_tear - name = "merlin tears" - seed_name = "merlin tears" - display_name = "merlin tears" - chems = list(/decl/reagent/bicaridine = list(3,7), /decl/reagent/dermaline = list(3,7), /decl/reagent/dylovene = list(3,7), /decl/reagent/tricordrazine = list(3,7), /decl/reagent/alkysine = list(1,2), /decl/reagent/oculine = list(1,2), /decl/reagent/peridaxon = list(4,5)) - kitchen_tag = "berries" - -/datum/seed/merlin_tear/setup_traits() - ..() - set_trait(TRAIT_PLANT_ICON,"bush5") - set_trait(TRAIT_PRODUCT_ICON,"berry") - set_trait(TRAIT_PRODUCT_COLOUR,"#4d4dff") - set_trait(TRAIT_PLANT_COLOUR, "#ff6600") - set_trait(TRAIT_YIELD,4) - set_trait(TRAIT_MATURATION,6) - set_trait(TRAIT_PRODUCTION,6) - set_trait(TRAIT_POTENCY,10) - set_trait(TRAIT_HARVEST_REPEAT,1) - set_trait(TRAIT_IMMUTABLE,1) diff --git a/code/modules/spell_system/spells/spell_list/self/conjure/radiant_aura.dm b/code/modules/spell_system/spells/spell_list/self/conjure/radiant_aura.dm index 827f8bdac61..ed6108bacae 100644 --- a/code/modules/spell_system/spells/spell_list/self/conjure/radiant_aura.dm +++ b/code/modules/spell_system/spells/spell_list/self/conjure/radiant_aura.dm @@ -6,7 +6,6 @@ invocation_type = SpI_EMOTE invocation = "conjures a sphere of fire around themselves." school = "conjuration" - spell_flags = NEEDSCLOTHES charge_max = 300 cooldown_min = 200 level_max = list(Sp_TOTAL = 2, Sp_SPEED = 2, Sp_POWER = 0) diff --git a/code/modules/spell_system/spells/spell_list/self/conjure/summon_carp.dm b/code/modules/spell_system/spells/spell_list/self/conjure/summon_carp.dm deleted file mode 100644 index 3f2b2a33f7c..00000000000 --- a/code/modules/spell_system/spells/spell_list/self/conjure/summon_carp.dm +++ /dev/null @@ -1,22 +0,0 @@ -/spell/aoe_turf/conjure/carp - name = "Summon Carp" - desc = "This spell conjures a simple carp." - feedback = "CA" - school = "conjuration" - charge_max = 1200 - spell_flags = NEEDSCLOTHES - invocation = "NOUK FHUNMM SACP RISSKA" - invocation_type = SpI_SHOUT - range = 1 - cast_sound = 'sound/magic/Summon_Karp.ogg' - summon_type = list(/mob/living/simple_animal/hostile/carp) - - hud_state = "wiz_carp" - -/spell/aoe_turf/conjure/carp/empower_spell() - if(!..()) - return 0 - - summon_amt++ - - return "You now summon [summon_amt] carps per spellcast." \ No newline at end of file diff --git a/code/modules/spell_system/spells/spell_list/self/conjure/summon_demon_creature.dm b/code/modules/spell_system/spells/spell_list/self/conjure/summon_demon_creature.dm deleted file mode 100644 index e266201bdcf..00000000000 --- a/code/modules/spell_system/spells/spell_list/self/conjure/summon_demon_creature.dm +++ /dev/null @@ -1,15 +0,0 @@ -/spell/aoe_turf/conjure/creature - name = "Summon Creature" - desc = "This spell tears the fabric of reality, allowing horrific daemons to spill forth." - cast_sound = 'sound/magic/Summon_Karp.ogg' - school = "conjuration" - charge_max = 1200 - spell_flags = 0 - invocation = "IA IA" - invocation_type = SpI_SHOUT - summon_amt = 2 - range = 3 - - summon_type = list(/mob/living/simple_animal/hostile/creature) - - hud_state = "wiz_creature" \ No newline at end of file diff --git a/code/modules/spell_system/spells/spell_list/self/conjure/summon_harmless_carp.dm b/code/modules/spell_system/spells/spell_list/self/conjure/summon_harmless_carp.dm deleted file mode 100644 index 6c2ab2106f4..00000000000 --- a/code/modules/spell_system/spells/spell_list/self/conjure/summon_harmless_carp.dm +++ /dev/null @@ -1,28 +0,0 @@ -/spell/aoe_turf/conjure/mirage - name = "Summon Mirage" - desc = "This spell summons a harmless carp mirage for a few seconds." - feedback = "MR" - school = "illusion" - charge_max = 1200 - spell_flags = NEEDSCLOTHES - invocation = "NOUK FHUNNM SACP RISSKA" - invocation_type = SpI_SHOUT - range = 1 - - duration = 600 - cooldown_min = 600 - level_max = list(Sp_TOTAL = 4, Sp_SPEED = 2, Sp_POWER = 3) - cast_sound = 'sound/magic/Summon_Karp.ogg' - summon_type = list(/mob/living/simple_animal/hostile/carp) - - hud_state = "wiz_carp" - - newVars = list("melee_damage_lower" = 0, "melee_damage_upper" = 0, "break_stuff_probability" = 0) - -/spell/aoe_turf/conjure/mirage/empower_spell() - if(!..()) - return 0 - - summon_amt++ - - return "You now summon [summon_amt] mirages per spellcast." \ No newline at end of file diff --git a/code/modules/spell_system/spells/spell_list/self/equip/holy_relic.dm b/code/modules/spell_system/spells/spell_list/self/equip/holy_relic.dm deleted file mode 100644 index 5ad19d39411..00000000000 --- a/code/modules/spell_system/spells/spell_list/self/equip/holy_relic.dm +++ /dev/null @@ -1,34 +0,0 @@ -/spell/targeted/equip_item/holy_relic - name = "Summon Holy Relic" - desc = "This spell summons a relic of purity into your hand for a short while." - feedback = "SR" - school = "transmutation" - charge_type = Sp_RECHARGE - charge_max = 600 - spell_flags = NEEDSCLOTHES | INCLUDEUSER - invocation = "YEE' RO SU!" - invocation_type = SpI_SHOUT - range = -1 - max_targets = 1 - level_max = list(Sp_TOTAL = 2, Sp_SPEED = 1, Sp_POWER = 1) - duration = 250 - cooldown_min = 350 - delete_old = 0 - compatible_mobs = list(/mob/living/carbon/human) - - hud_state = "purge1" - - equipped_summons = list("active hand" = /obj/item/nullrod) - -/spell/targeted/equip_item/holy_relic/cast(list/targets, mob/user = usr) - ..() - for(var/mob/M in targets) - M.visible_message("A rod of metal appears in \the [M]'s hand!") - -/spell/targeted/equip_item/holy_relic/empower_spell() - if(!..()) - return 0 - - duration += 50 - - return "The holy relic now lasts for [duration/10] seconds." \ No newline at end of file diff --git a/code/modules/spell_system/spells/spell_list/self/equip/seed.dm b/code/modules/spell_system/spells/spell_list/self/equip/seed.dm deleted file mode 100644 index 45692b78484..00000000000 --- a/code/modules/spell_system/spells/spell_list/self/equip/seed.dm +++ /dev/null @@ -1,21 +0,0 @@ -/spell/targeted/equip_item/seed - name = "Summon Seed" - desc = "This spell summons a random seed into the hand of the wizard." - feedback = "SE" - delete_old = 0 - - spell_flags = INCLUDEUSER | NEEDSCLOTHES - invocation_type = SpI_WHISPER - invocation = "Ria'li akta" - - equipped_summons = list("active hand" = /obj/item/seeds/random) - compatible_mobs = list(/mob/living/carbon/human) - - charge_max = 600 //1 minute - cooldown_min = 200 //20 seconds - level_max = list(Sp_TOTAL = 3, Sp_SPEED = 3, Sp_POWER = 0) - - range = -1 - max_targets = 1 - - hud_state = "wiz_seed" \ No newline at end of file diff --git a/code/modules/spell_system/spells/spell_list/self/equip/shield.dm b/code/modules/spell_system/spells/spell_list/self/equip/shield.dm deleted file mode 100644 index c337e7badae..00000000000 --- a/code/modules/spell_system/spells/spell_list/self/equip/shield.dm +++ /dev/null @@ -1,41 +0,0 @@ -/spell/targeted/equip_item/shield - name = "Summon Shield" - desc = "Summons the most holy of shields, the buckler. Commonly used during wizard riots." - feedback = "SH" - school = "evocation" - invocation = "Sia helda!" - invocation_type = SpI_SHOUT - spell_flags = INCLUDEUSER | NEEDSCLOTHES - range = -1 - max_targets = 1 - - compatible_mobs = list(/mob/living/carbon/human) - - level_max = list(Sp_TOTAL = 3, Sp_SPEED = 2, Sp_POWER = 1) - charge_type = Sp_RECHARGE - charge_max = 900 - cooldown_min = 300 - equipped_summons = list("off hand" = /obj/item/shield/) - duration = 300 - delete_old = 0 - var/item_color = "#6666ff" - var/block_chance = 30 - - hud_state = "wiz_shield" - -/spell/targeted/equip_item/shield/summon_item(var/new_type) - var/obj/item/shield/I = new new_type() - I.icon_state = "buckler" - I.color = item_color - I.name = "Wizard's Shield" - I.base_block_chance = block_chance - return I - -/spell/targeted/equip_item/shield/empower_spell() - if(!..()) - return 0 - - item_color = "#6600ff" - block_chance = 60 - - return "Your summoned shields will now block more often." \ No newline at end of file diff --git a/code/modules/spell_system/spells/spell_list/self/generic/area_teleport.dm b/code/modules/spell_system/spells/spell_list/self/generic/area_teleport.dm index ea25cc3e58c..8760b7e187d 100644 --- a/code/modules/spell_system/spells/spell_list/self/generic/area_teleport.dm +++ b/code/modules/spell_system/spells/spell_list/self/generic/area_teleport.dm @@ -4,7 +4,6 @@ feedback = "TP" school = "abjuration" charge_max = 600 - spell_flags = NEEDSCLOTHES invocation = "SCYAR NILA" invocation_type = SpI_SHOUT cooldown_min = 200 //100 deciseconds reduction per rank diff --git a/code/modules/spell_system/spells/spell_list/self/generic/avian.dm b/code/modules/spell_system/spells/spell_list/self/generic/avian.dm deleted file mode 100644 index 453827e5da4..00000000000 --- a/code/modules/spell_system/spells/spell_list/self/generic/avian.dm +++ /dev/null @@ -1,19 +0,0 @@ -/spell/targeted/shapeshift/avian - name = "Polymorph" - desc = "This spell transforms the wizard into the common parrot." - feedback = "AV" - possible_transformations = list(/mob/living/simple_animal/parrot) - - invocation = "Poli'crakata!" - invocation_type = SpI_SHOUT - drop_items = 0 - share_damage = 0 - spell_flags = INCLUDEUSER - range = -1 - duration = 150 - charge_max = 600 - cooldown_min = 300 - level_max = list(Sp_TOTAL = 1, Sp_SPEED = 1, Sp_POWER = 0) - hud_state = "wiz_parrot" - - newVars = list("maxHealth" = 50, "health" = 50) \ No newline at end of file diff --git a/code/modules/spell_system/spells/spell_list/self/generic/corrupt_form.dm b/code/modules/spell_system/spells/spell_list/self/generic/corrupt_form.dm deleted file mode 100644 index 5740d8d3c3f..00000000000 --- a/code/modules/spell_system/spells/spell_list/self/generic/corrupt_form.dm +++ /dev/null @@ -1,39 +0,0 @@ -/spell/targeted/shapeshift/corrupt_form - name = "Corrupt Form" - desc = "This spell shapes the wizard into a terrible, terrible beast." - feedback = "CF" - possible_transformations = list(/mob/living/simple_animal/hostile/faithless/wizard) - - invocation = "mutters something dark and twisted as their form begins to twist..." - invocation_type = SpI_EMOTE - spell_flags = INCLUDEUSER - range = -1 - duration = 300 - charge_max = 1200 - cooldown_min = 600 - - drop_items = 0 - share_damage = 0 - - level_max = list(Sp_TOTAL = 3, Sp_SPEED = 2, Sp_POWER = 2) - - newVars = list("name" = "corrupted soul") - - hud_state = "wiz_corrupt" - -/spell/targeted/shapeshift/corrupt_form/empower_spell() - if(!..()) - return 0 - - switch(spell_levels[Sp_POWER]) - if(1) - duration += 100 - return "You will now stay corrupted for [duration/10] seconds." - if(2) - newVars = list("name" = "\proper corruption incarnate", - "melee_damage_upper" = 45, - "resistance" = 6, - "health" = 650, //since it is foverer i guess it would be fine to turn them into some short of boss - "maxHealth" = 650) - duration = 0 - return "You revel in the corruption. There is no turning back." \ No newline at end of file diff --git a/code/modules/spell_system/spells/spell_list/self/generic/dark_resurrection.dm b/code/modules/spell_system/spells/spell_list/self/generic/dark_resurrection.dm deleted file mode 100644 index 60ca525f6c6..00000000000 --- a/code/modules/spell_system/spells/spell_list/self/generic/dark_resurrection.dm +++ /dev/null @@ -1,51 +0,0 @@ -/spell/targeted/dark_resurrection - name = "Dark Resurrection" - desc = "This spell brings the user back to life, as long their soul is stored in a phylactery." - feedback = "DAR" - range = 0 - school = "necromancy" - spell_flags = GHOSTCAST | INCLUDEUSER - charge_max = 600 //1 minute - max_targets = 1 - - invocation = "" - invocation_type = SpI_NONE - - hud_state = "wiz_lich" - -/spell/targeted/dark_resurrection/cast(mob/target,var/mob/living/carbon/human/user as mob) - ..() - if(user.stat != DEAD) - to_chat(user, "You're not dead yet!") - return 0 - - var/obj/item/phylactery/P - for(var/thing in world_phylactery) - var/obj/item/phylactery/N = thing - if (!QDELETED(N) && N.lich == user) - P = N - - if(P) - user.forceMove(get_turf(P)) - to_chat(user, "Your dead body returns to your phylactery, slowly rebuilding itself.") - if(prob(25)) - var/area/A = get_area(P) - command_announcement.Announce("High levels of bluespace activity detected at \the [A]. Investigate it soon as possible.", "Bluespace Anomaly Report") - - addtimer(CALLBACK(src, .proc/post_dark_resurrection, user), rand(200, 400)) - return 1 - - else - to_chat(user, "Your phylactery was destroyed, your existence will face oblivion now.") - user.visible_message("As [user]'s body turns to dust, a twisted wail can be heard!") - playsound(get_turf(user), 'sound/hallucinations/wail.ogg', 50, 1) - user.dust() - return 0 - -/spell/targeted/dark_resurrection/proc/post_dark_resurrection(var/mob/living/carbon/human/user as mob) - user.revive() - to_chat(user, "You have returned to life!") - user.visible_message("[user] rises up from the dead!") - playsound(get_turf(user), 'sound/magic/pope_entry.ogg', 100, 1) - user.update_canmove() - return 1 \ No newline at end of file diff --git a/code/modules/spell_system/spells/spell_list/self/generic/ethereal_jaunt.dm b/code/modules/spell_system/spells/spell_list/self/generic/ethereal_jaunt.dm index c538ebbfb27..039fa376187 100644 --- a/code/modules/spell_system/spells/spell_list/self/generic/ethereal_jaunt.dm +++ b/code/modules/spell_system/spells/spell_list/self/generic/ethereal_jaunt.dm @@ -4,7 +4,7 @@ feedback = "EJ" school = "transmutation" charge_max = 300 - spell_flags = Z2NOCAST | NEEDSCLOTHES | INCLUDEUSER + spell_flags = Z2NOCAST | INCLUDEUSER invocation = "none" invocation_type = SpI_NONE range = -1 diff --git a/code/modules/spell_system/spells/spell_list/self/generic/lichdom.dm b/code/modules/spell_system/spells/spell_list/self/generic/lichdom.dm deleted file mode 100644 index 43d51d1349b..00000000000 --- a/code/modules/spell_system/spells/spell_list/self/generic/lichdom.dm +++ /dev/null @@ -1,37 +0,0 @@ -/spell/targeted/lichdom - name = "Lichdom" - desc = "Trade your life and soul for immortality and power." - feedback = "LID" - range = 0 - school = "necromancy" - charge_max = 10000 - spell_flags = Z2NOCAST | NEEDSCLOTHES | INCLUDEUSER - invocation_type = SpI_EMOTE - invocation = "entones an obscure chant..." - max_targets = 1 - level_max = list(Sp_TOTAL = 0, Sp_SPEED = 0, Sp_POWER = 0) - - cast_sound = 'sound/magic/pope_entry.ogg' - - hud_state = "wiz_lich" - -/spell/targeted/lichdom/cast(mob/target,var/mob/living/carbon/human/user as mob) - ..() - if(isundead(user)) - to_chat(user, "You have no soul or life to offer.") - return 0 - - user.visible_message("\The [user]'s skin sloughs off bone, their blood boils and guts turn to dust!") - gibs(user.loc) - user.add_spell(new /spell/targeted/dark_resurrection) - user.set_species(SPECIES_SKELETON) - user.unEquip(user.wear_suit) - user.unEquip(user.head) - user.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/black(user), slot_wear_suit) - user.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/black(user), slot_head) - to_chat(user, "Your soul flee to the remains of your heart, turning it into your phylactery. Do not allow anyone to destroy it!") - var/obj/item/phylactery/G = new(get_turf(user)) - G.lich = user - G.icon_state = "cursedheart-on" - user.remove_spell(src) - return 1 \ No newline at end of file diff --git a/code/modules/spell_system/spells/spell_list/self/generic/mark_recall.dm b/code/modules/spell_system/spells/spell_list/self/generic/mark_recall.dm deleted file mode 100644 index 6fea34c3d52..00000000000 --- a/code/modules/spell_system/spells/spell_list/self/generic/mark_recall.dm +++ /dev/null @@ -1,83 +0,0 @@ -/spell/mark_recall - name = "Mark and Recall" - desc = "This spell was created so wizards could get home from the bar without driving." - feedback = "MK" - school = "abjuration" - charge_max = 300 - spell_flags = Z2NOCAST - invocation = "RE ALKI R'NATHA" - invocation_type = SpI_WHISPER - cooldown_min = 150 - - smoke_amt = 1 - smoke_spread = 5 - - level_max = list(Sp_TOTAL = 4, Sp_SPEED = 4, Sp_POWER = 1) - - cast_sound = 'sound/effects/teleport.ogg' - hud_state = "wiz_mark" - var/mark = null - -/spell/mark_recall/choose_targets() - if(!mark) - return list("magical fairy dust") //because why not - else - return list(mark) - -/spell/mark_recall/cast(var/list/targets,mob/user) - if(!targets.len) - return 0 - var/target = targets[1] - if(istext(target)) - mark = new /obj/effect/decal/wizard_mark(get_turf(user),src) - return 1 - if(!istype(target,/obj)) //something went wrong - return 0 - var/turf/T = get_turf(target) - if(!T) - return 0 - do_teleport(user,T) - ..() - -/spell/mark_recall/empower_spell() - if(!..()) - return 0 - - spell_flags = STATALLOWED - - return "You no longer have to be conscious to activate this spell." - -/obj/effect/decal/wizard_mark - name = "mark of the wizard" - desc = "A strange rune, probably someone playing with crayons again." - icon = 'icons/obj/rune.dmi' - icon_state = "wizard_mark" - - anchored = 1 - unacidable = 1 - layer = TURF_LAYER - - var/spell/mark_recall/spell - -/obj/effect/decal/wizard_mark/New(var/newloc,var/mrspell) - ..() - spell = mrspell - -/obj/effect/decal/wizard_mark/Destroy() - spell.mark = null //dereference pls. - spell = null - return ..() - -/obj/effect/decal/wizard_mark/attack_hand(var/mob/user) - if(user == spell.holder) - user.visible_message("\The [user] mutters an incantation and \the [src] disappears!") - qdel(src) - ..() - -/obj/effect/decal/wizard_mark/attackby(var/obj/item/I, var/mob/user) - if(istype(I, /obj/item/nullrod) || istype(I, /obj/item/spellbook)) - user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) - src.visible_message("\The [src] fades away!") - qdel(src) - return - ..() diff --git a/code/modules/spell_system/spells/spell_list/self/generic/mutate.dm b/code/modules/spell_system/spells/spell_list/self/generic/mutate.dm index 507a50b4bce..f54daddf9f8 100644 --- a/code/modules/spell_system/spells/spell_list/self/generic/mutate.dm +++ b/code/modules/spell_system/spells/spell_list/self/generic/mutate.dm @@ -4,7 +4,7 @@ feedback = "MU" school = "transmutation" charge_max = 400 - spell_flags = Z2NOCAST | NEEDSCLOTHES | INCLUDEUSER + spell_flags = Z2NOCAST | INCLUDEUSER invocation = "BIRUZ BENNAR" invocation_type = SpI_SHOUT message = "You feel strong! You feel a pressure building behind your eyes!" diff --git a/code/modules/spell_system/spells/spell_list/self/generic/no_clothes.dm b/code/modules/spell_system/spells/spell_list/self/generic/no_clothes.dm deleted file mode 100644 index 169e81a214e..00000000000 --- a/code/modules/spell_system/spells/spell_list/self/generic/no_clothes.dm +++ /dev/null @@ -1,5 +0,0 @@ -/spell/noclothes - name = "No Clothes" - desc = "Learn the ways of robeless spell casting." - feedback = "NC" - spell_flags = NO_BUTTON \ No newline at end of file diff --git a/code/modules/spell_system/spells/spell_list/self/generic/return_master.dm b/code/modules/spell_system/spells/spell_list/self/generic/return_master.dm deleted file mode 100644 index bcafdfb5711..00000000000 --- a/code/modules/spell_system/spells/spell_list/self/generic/return_master.dm +++ /dev/null @@ -1,29 +0,0 @@ -/spell/contract/return_master - name = "Return to Master" - desc = "Teleport back to your master" - - school = "abjuration" - charge_max = 600 - spell_flags = 0 - invocation = "none" - invocation_type = SpI_NONE - cooldown_min = 200 - - smoke_spread = 1 - smoke_amt = 5 - - hud_state = "wiz_tele" - - -/spell/contract/return_master/cast(mob/target, mob/user) - target = ..(target,user) - if(!target) - return - - to_chat(target, FONT_LARGE(SPAN_WARNING("\The [user] teleported to you!"))) - user.forceMove(get_turf(target)) - user.visible_message(SPAN_WARNING("\The [user] appears out of thin air!"), SPAN_NOTICE("You successfully teleport to \the [target].")) - var/datum/effect/effect/system/smoke_spread/smoke = new /datum/effect/effect/system/smoke_spread - smoke.set_up(5, 0, get_turf(user)) - smoke.attach(user) - smoke.start() \ No newline at end of file diff --git a/code/modules/spell_system/spells/spell_list/self/projectile/passage.dm b/code/modules/spell_system/spells/spell_list/self/projectile/passage.dm deleted file mode 100644 index 1d3efbce94d..00000000000 --- a/code/modules/spell_system/spells/spell_list/self/projectile/passage.dm +++ /dev/null @@ -1,47 +0,0 @@ -/spell/targeted/projectile/dumbfire/passage - name = "Passage" - desc = "throw a spell towards an area and teleport to it." - feedback = "PA" - proj_type = /obj/item/projectile/spell_projectile/passage - - - school = "abjuration" - charge_max = 250 - spell_flags = 0 - invocation = "A'YASAMA" - invocation_type = SpI_SHOUT - range = 15 - - - level_max = list(Sp_TOTAL = 1, Sp_SPEED = 0, Sp_POWER = 1) - spell_flags = NEEDSCLOTHES - duration = 15 - - proj_step_delay = 1 - - hud_state = "gen_project" - - -/spell/targeted/projectile/dumbfire/passage/prox_cast(var/list/targets, atom/spell_holder) - for(var/mob/living/L in targets) - apply_spell_damage(L) - - var/turf/T = get_turf(spell_holder) - - holder.forceMove(T) - var/datum/effect/effect/system/smoke_spread/S = new /datum/effect/effect/system/smoke_spread() - S.set_up(3,0,T) - S.start() - - -/spell/targeted/projectile/dumbfire/passage/empower_spell() - if(!..()) - return 0 - - amt_stunned += 3 - - return "[src] now stuns those who get hit by it." - -/obj/item/projectile/spell_projectile/passage - name = "spell" - icon_state = "energy2" \ No newline at end of file diff --git a/config/example/tips.txt b/config/example/tips.txt index 6f664f5ddfe..89b8fe60e05 100644 --- a/config/example/tips.txt +++ b/config/example/tips.txt @@ -91,9 +91,6 @@ As a Cultist, invest in taking over xenobio, an adamantine golem army can quickl As a Cultist, your team starts off very weak, but if necessary can quickly convert everything they have into raw power. Make sure you have the numbers and equipment to support going loud, or the cult will fall flat on its face. As a Cultist, the Blood Boil rune will deal massive amounts of brute damage to non-cultists and some damage to fellow cultists of Nar-Sie nearby. As a Cultist, you can create an army of manifested goons using a combination of the Manifest rune, which creates homunculi from ghosts, and the Blood Drain rune, which drains life from anyone standing on any blood drain rune. -As a Wizard, the fireball spell performs very poorly at close range, as it can easily catch you in the blast. It is best used as a form of artillery down long hallways. -As a Wizard, most spells become unusable if you are not wearing your wizard robe and hat. -As a Wizard, remember to get spells for yourself, and not scrolls, unless you want to give an ability away to someone. Scroll costs double! As a Ghost, you can double click on people, bots, or the singularity to follow them. Occasionally the tip of the round might lie to you. Don't panic, this is normal. To defeat your enemy, shoot at them until they die. diff --git a/html/changelogs/doxxmedearly - remove_wizard.yml b/html/changelogs/doxxmedearly - remove_wizard.yml new file mode 100644 index 00000000000..c8e213bbc8a --- /dev/null +++ b/html/changelogs/doxxmedearly - remove_wizard.yml @@ -0,0 +1,11 @@ +author: Doxxmedearly + +delete-after: True + +changes: + - rscdel: "Removed wizard and conflux (Wizard + Cult)." + - rscdel: "Removed most wizard-associated spells and items (Wands, staves, Magivend, etc). Some kept for use in admin events." + - rscdel: "Removed roundstart tips referencing wizards." + - rscdel: "Removed the armor value on wizard robes." + - rscadd: "Added a random item spawn for the old wizard clothing, so you can dress up like a nerd. Sometimes spawns in cargo or maint, as well as inside gifts." + - tweak: "Reflavors some items to remove references to the wizard federation." diff --git a/icons/obj/wands.dmi b/icons/obj/wands.dmi index 00698045ffe432a6abaf6ac3cff31a9055242d9b..6058e1bc9c08f131c07a5e48dee94802ca300d03 100644 GIT binary patch literal 499 zcmVHq)$0d!JMQvg8b*k%9#0D^i{Sad{Xb7OL8aCB*JZU6vyoKseCa&`CgQ*iP1 zJoe3UwML5+dE4cc(fPDr4xBx*N zR=hi10002mNkl^cALJfNSOKik~bS@6Ie6&${^+{ zr}HS~D#J8hu0kH*zd8P5zIXq9F86!6?0+n4(eLE4e_qz7kmEnNKc#K`mU77> p2ZH>~`+=_hA5PGa0002&nm4k84UaLv#|-mGeMni8y)0wN zzLR~+7|aOY!RoO=6k%{;w9a@C5M9(v*(gzS$M$$&|uUNlDv)brI;=Kc33L%AG8kAz%l z9Ccpwlp>Gp)$3|fn&P#GDpCnZ#_Nk73D(lMHxf}2@yV{Ky}Qi49tLU!fyrG(y`jrZ zr}qU5?l~v;%VqHZGe4!w$2)gkZcVNOfw+`4RFv-fWNc=-JT?27+Kw$Ub`)_AZ5egE z7x6S(l0KtQUl85dUie`cRwrXpqCZrc9TNHU14mK6Abocjt;su+TFQLrtqV7VOWvT3 zHz`eqBd0b48S9Q&Bc41e_?8@^Bw;Q;I+`2|qHQ{Qb!$7-A8WbyJ*Yi( zdD6e{sN27{;b4-TI+Qi{n^6@Hf?ngFX(n~(hw9`{aK3zYFy~u_i z77BgS@r8mx1y0&vD=saa{~;!}Fu$i-CYW7UDCMI4Nya1?6#1P68Z^mR@Cxh(cfi&J5%U$^F8b7N1bc^%$Y z(>_-|?^P(1OqaaN>KpSqZ%0{yYioB5y}07Mcb(QJs@|ItYBgl|-ZF5deVK5shz&?^ zTs$0k`tNv_F*PWbw>ho^Ie0_v`o2a25 zu?edJB_LNfd7O^3$iD}KdXzSVp$41zm^UD6xU-NTU#WakKgS+q1Ye_33wPw8G=3oZ zfpt|8t`NPzf84?Mbw^xi>OwPcgWT9%kO3Egs=u_mO9?Z15f2hPg>N@l`=z2eusmqz7>WCNPSEXo76oS~7QLOseG zy&(_Q{vftCqJOOG7M6WPrM)tKfLQkmT=JMZjj;yP>&{K<2Gir@XhCKotu!ZJdMtxB!7bpsssHJ# zoedMIyKT3!zmRTGV1_-N;;vSEkD&sNAH4-tR``QJ7w+sOn%xulE*1UHG%m$!8RNY< z{<7Efw#euk=J8A{nY={BE_he-0O5K(L?=2$<;xb6_Iip+=fFvos!{|Sr=?y;Fi>P7 zNQ^qGr!kC8@OZtOZ_r`ycX!08uvOL!{;Y6qviz8FV{K#OK6Yg= zYbU?4G*ITe`$U?rzxk?k&&!B$Z2b@mZkMk|+rTWMaEerfBJe$aj;m2F zXg!?hqOde{{^eNAD@srkdRtUMWahV@9dV%LT!5ng(!puMDc3pa94q=+6OdZ{0#v8# z>5=NK2!l#b2PNkDH#JVLlbJ>LxTfAIpOc&j)O$Q3_I)7dC4BSv+w5glx7K%?6Rjtt zzNVu~K7PMk?(adIXJW8-2>wrfKG2+v=Hd)pSEk~h_Brg+Sr`mDRaZUg-`_O8V%*9W z?%f|6!jF-RKHv1Y$~oO^{FA8SkYr2w*#0YvFw0MkTw$rRJ0cmgC7dw#f1GCogVItd zKxo1M-SpetYXyBct4ByG{&=a{BJCLB{`^-w>tjPB3XuQuQUh1~CwS2nZq`Wl#6N?B zgT}_jU;B%$YZ;e8T%S^plk;!-@Ulj}aqrreTCFB(IO8$uwzdcMZLm|8_wVaj{Hur> zo38X~{LMNivNJw|{_{@jiR4)?ME;|yvv4wmnxcha=#3Sx@}31W#gyAu=?n@|=)Cmb zQdE1gbhd8=7fuWeeHLHDYg?Q}7O=e}3W}3r+i=@eYEU!7op~*)>dz8#K{a9Z75>>) z*zl0Eu*$O`f0XzHnVQLUE73Q%^wczwVl48jklm82W9RK8YiJWiW7HDO>Y2wg$NGMk%u z_s-levR;3bFCz+Uj)C{Uk(t5WGb61Ez1|CDabyIyH1z*3E@<|iR_rj!&KT*tG#se} zTe$gW5Rf^*kC{PblcllK5tZ>!M013s3RyMZvKJeUz}T!-b>h&{M9Qlq`%zuad-2r`=rR51R0EDgP2`uMTEEs*t$ zEiBrX%AEHDr9_A$BLx)kqk3k+_sP`WNIjbQI!cjJ1lq`|?V`gw#%K=&% z{#K1A_x2o%&%-MR@VR@(WlC;XT{9v#()ei_q1tC4AxDf52|)@HHa| z2IuGSO}f^XL&>_X4JhQ~vYQ5A)}t89)FC8_x2oXVJKzkz4teI^poi!_z&o&Aw)KZ)d{de`S zz}gTSS9!KL{YHXzA8LAU9L?!%llK#N?UzoQ>lzzuJK`tIU7Ef1xzaS@o_RRLYz2^T05d5FYZ)WTVJg&erS%_Msd>S zMd=m=Zs-;UZs37uNADORM+Y32(EsbWJg4Og0D&V|2cYd*QGr5t+dIBz*~kWAk3RU8 z(7b4NSmR`0#Wh)wEMlTxKd6tnc6u<*^VLc`P5y%nRw+JVhJaK-s>7I&w%+K=ireFc z?(!W_l`F^(iw7B0{Glqyk|nBgO8!teYgT?xc`^x9jG^aaUh$hP?v9DI@kZA#%GhXu zM4(9ZR?j=GhRI7p74>p4Z6jFW!oaBINMj&D@#k?6C>(&)6;b#T4FU)gjPi*L#6w1U z8R!bE*M3=Z01)fY=Ei)U&EFu!!9f0u2F%N%A~ zsL?3qbssPp)p04s=P$SvcA%NsL%DB4kFL}H4>Q#Z3Q>i^Ru6f&B_QeQ!qB5;JHD+O zZ$E2w;=8Awy=YIotqjxXm|;yKfzD^qXy!7I)H`+eMS2R}z<7g{-z+5x%$pJp<_fn6 z84BTLo8U)HVfZjSzeYzBz-20{4??Rpu0#}zDu4mb|8_+Ld%2!9o>l+6(GnFNSk^^X zNBG&URMM9A&;j|9FQ4AOA**F7_LdX`bMdT-3z^&aT=%^L0ievT>j+*hoMVkVlG&y26nUO+NY z+;E)br&T3yl<`%)Y_?)oz3;+qo$wO>J}x@0nf{+#pG2j2INR{{V&`ZI`*G&zX~(ay zBu#YQb_@IPL?G>p;Fak@L&Ei&H%9a_{){iRL`5_s_FRlNg@Wjp7IMKq(_&qy9*c)W zUz;hGBhjj=*o;0JpEGSr-Yg)AbDqbB)nHF2iC-V4@C6LeB zVadh_x-V5^Uj1T8S)Hh2Lg6SlbB2RG9G;j3n4DD%DITPwOP^_HlUN7PD*6;ZYyD23 z`C{K6#g#y!NUX@=f=5&zM$owcs{@kTh_PDY3ftR-=`$TaxD|ZLwD%%Gtn9&vZK6s&+h#Gfje=sbA`7ikBxPYem>L0rL*W3{O#ja z#RRK<<>6O5WZ2^^Zyw~zb3I+$-&Z62k%Ef?e9B{GZqnGxGLtp^UZ)So#{H2d-YkVT zMB+Vb39}@vW|v*Y5Cz-dA3HHNb{cuRi;ZpWrbH z;+_PKq~OxzXV+i>N9h#YaW-Mkruk?7)PbiHbBv9Yn+E#edoug-MPTkYWvvTnJCul- zpz;@6v0-9r^rz{)mYS&Kla-G@bPnVlGn|G`+4NaxG(d~pv){M<#p)qrFJrvj(+@Tq zb^@QQEQwmLr_W|JF3aNNHOX9^koiSA#za?Q zjRy_c=k`5f#tAUYckrd@-t~$1>n2TR{!a-qWO#S%5OcUy3}=AX7Z}Mbfbvq4%l69y zgT}pZUmlJbR1+RxGT|~FH-$~I zCJ=H^YvHtu^uWt|@ZbQgD8qq+;P;KrNN#ezp9A8&%?FS?!^T|rx)k!~%7kUWdYu}; z8ELm^UeWs>{vIf^_%J$Vo)KT98bqEm{S{U)V>tLc7~rcchKTd-Ru1$ayoXWj-sDf* z`|3Kfbg5d?WPSxIU@)w(+Nob??knRp%E}|$nWNOlk3Qh9V>~W5e2#l$r#;D$S^?$( z`ij!o^qf;ef^C^I_5}rvrSKw%MZ_o+s6Ouis*PMa?g@2p{*M^5;)2U$?jG-DMY!yC z!)rik(7Ds@EqYnf#ch1}Xdw_|d!hE7KZ5zWB1fBPlI!Oqi7HPPYFXW(GgTrB$rhiJ zl$UBI8bEBlAMXm9iGX?HoSF5Eg#R*CK&?DViES=LCp<>(?+;5cId@{78n_Zcibny; z;{Quu;ZEl4Uwj;|*|@T^E6reeJIT7LL|bjZk>qx}WPoFBea(n1RZDR6)635d3Si5t z|E0BFH;d$aL;xxdyToSXfLPD|S9V28NoO-UJP%wOM9(vW3z^1_A94X`fbQQu6JL>v zJ|gWGH-23PSv~f;h-vCY0g&aYf(mw#QBQA*2&`7wN^2`Si0r#D38lYFmSoyKBrJJptW;@Gm_UnOFm`$=kt@rF{p5E zq(-M`=E(<~=0r```r6%27X-0Ap_QW+sL076(L*U4ZqKCj zEy89e&;V(F4{uCO%`6(FHAKKZaV~IiQIwA~owULhGoQQ999;=Kc6{9ab~3HIySFn8 z%p)!(FOc5!>C47Gj*`D(ac|ClcZo3K@6mPI-MBd|9C9aCr%QetBs;a(v`ZT7W&*Sp zB}mO=P;ww`--03Y>3Py}&vJQveROp<9iSRge)n&vGM(-n?fxF%5A>LcsV5!U_T?Gu zo@~$^9$7N^$YKH6;9gvF2@qy0PA+sHEs)%BTCz=6^os4P&M)rfrSyIKMj4}{{fP1_MeM8E zu_Z#KLSyMa;0S4h#z`?Jfz&+2zVBzD zU1><505qZF<6@C)RMT@*Fsa+p;`-qrEH$F$jN zeNBX%Sh_k7eru~>Bp&j7xCyz7M{`R-vZEMRy4D-BP=~DL6BnLX9}4261W*>c}Al)!6Fpj^f9h_5=z*6=JTZx(4F6$NSh4b-BD#tI_iSs{{O@As-ud zWe+y5@p_LLNh)raUf{kG>`=T6NP5wxfPl@->7Igx;h6f9m`J$&8KF|g&_l07WfUm; zjr)LO5Sx56&QzTVaT2o+NSxml#cCZTyp{gTmXx5A<=3ZebuLZo_Y;-HFTh#^{2;IS zQu?O9klr-JrIg78nDOXH6l2tNQ`YWkT27#mISa$gzaOaqij0Xeq9IHwQt@&~JhWT{ z(ldAI_c?Gxp^Y#E^Aj~N%Nk7`Tm;1Vu8@D_E2<42hCP5ayD~?x=F$RGFIVkGxYgNV z#*Wnzg!^5Bp-jH@-moFyaa9Z5ssATROI zcjRW7hXka@qICz=BnA-^od-bO3A7Xa2t|Gna;K79!qv-d9j{UVF5LmxSvJnmZI z7{&oE4MFDS3R2~g@M!wTgb(0r)Pyhf^;!fznA&|WZa6jJ(Jy87KgKnb|9ZHos{VC# zd-bM0J0itl><;wTNxNMHLhBECns=Ir8!L|fRNduZn*K*F)B7VzJ>((b-ilHLAY=S3 z`{+KCGj`_AN0brKQEvwir=7|uK>M|&Xk(*z6`UFkH3guae9PckG|~zg=U%Vb!!nb# z1O-yH+8f|}4DYikCD&yYL*I-qR~7|U?ct7ak~eSCW{1g-^8{Z60H8_4r#Z<{-6H(1 z#-MKjS$r2@1NVN%cq7qncGt3HCM(0uSrHy9cBdP5hi!bE8VXVGZPH_%Z*$Y;bA-ZD zI+Jak-^|6EX`&U|keRm5qI@*eHi*cVv?>?6PpKRnP-5s33r*m!CXj}zj!G%gD&#)^ Dcoj@P diff --git a/maps/exodus/exodus-2_centcomm.dmm b/maps/exodus/exodus-2_centcomm.dmm index cd98f80d174..e752bf0c8b5 100644 --- a/maps/exodus/exodus-2_centcomm.dmm +++ b/maps/exodus/exodus-2_centcomm.dmm @@ -9530,13 +9530,6 @@ icon_state = "wood" }, /area/antag/wizard) -"aKf" = ( -/obj/machinery/vending/magivend, -/turf/unsimulated/floor{ - dir = 8; - icon_state = "wood" - }, -/area/antag/wizard) "aKg" = ( /obj/structure/simple_door/wood{ icon_state = "wood" @@ -27533,7 +27526,7 @@ aJJ aJG aJV aJX -aKf +aJG aKi aJV aJG