diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index 19ad496656b..c0eb6796038 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -4,7 +4,6 @@ var/spell_type = null var/desc = "" var/category = "Offensive" - var/log_name = null //What it shows up as in logs var/cost = 2 var/refundable = TRUE var/obj/effect/proc_holder/spell/S = null //Since spellbooks can be used by only one person anyway we can track the actual spell @@ -50,7 +49,7 @@ aspell.on_purchase_upgrade() return TRUE //No same spell found - just learn it - SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, log_name) + SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) user.mind.AddSpell(newspell) to_chat(user, "You have learned [newspell.name].") return TRUE @@ -99,137 +98,116 @@ /datum/spellbook_entry/blind name = "Blind" spell_type = /obj/effect/proc_holder/spell/trigger/blind - log_name = "BD" category = "Offensive" cost = 1 /datum/spellbook_entry/lightningbolt name = "Lightning Bolt" spell_type = /obj/effect/proc_holder/spell/charge_up/bounce/lightning - log_name = "LB" category = "Offensive" cost = 1 /datum/spellbook_entry/cluwne name = "Curse of the Cluwne" spell_type = /obj/effect/proc_holder/spell/touch/cluwne - log_name = "CC" category = "Offensive" /datum/spellbook_entry/banana_touch name = "Banana Touch" spell_type = /obj/effect/proc_holder/spell/touch/banana - log_name = "BT" cost = 1 /datum/spellbook_entry/mime_malaise name = "Mime Malaise" spell_type = /obj/effect/proc_holder/spell/touch/mime_malaise - log_name = "MI" cost = 1 /datum/spellbook_entry/horseman name = "Curse of the Horseman" spell_type = /obj/effect/proc_holder/spell/horsemask - log_name = "HH" category = "Offensive" /datum/spellbook_entry/disintegrate name = "Disintegrate" spell_type = /obj/effect/proc_holder/spell/touch/disintegrate - log_name = "DG" category = "Offensive" /datum/spellbook_entry/fireball name = "Fireball" spell_type = /obj/effect/proc_holder/spell/fireball - log_name = "FB" category = "Offensive" /datum/spellbook_entry/fleshtostone name = "Flesh to Stone" spell_type = /obj/effect/proc_holder/spell/touch/flesh_to_stone - log_name = "FS" category = "Offensive" /datum/spellbook_entry/mutate name = "Mutate" spell_type = /obj/effect/proc_holder/spell/genetic/mutate - log_name = "MU" category = "Offensive" /datum/spellbook_entry/rod_form name = "Rod Form" spell_type = /obj/effect/proc_holder/spell/rod_form - log_name = "RF" category = "Offensive" /datum/spellbook_entry/infinite_guns name = "Lesser Summon Guns" spell_type = /obj/effect/proc_holder/spell/infinite_guns - log_name = "IG" category = "Offensive" //Defensive /datum/spellbook_entry/disabletech name = "Disable Tech" spell_type = /obj/effect/proc_holder/spell/emplosion/disable_tech - log_name = "DT" category = "Defensive" cost = 1 /datum/spellbook_entry/forcewall name = "Force Wall" spell_type = /obj/effect/proc_holder/spell/forcewall - log_name = "FW" category = "Defensive" cost = 1 /datum/spellbook_entry/rathens name = "Rathen's Secret" spell_type = /obj/effect/proc_holder/spell/rathens - log_name = "RS" category = "Defensive" cost = 2 /datum/spellbook_entry/repulse name = "Repulse" spell_type = /obj/effect/proc_holder/spell/aoe/repulse - log_name = "RP" category = "Defensive" cost = 1 /datum/spellbook_entry/smoke name = "Smoke" spell_type = /obj/effect/proc_holder/spell/smoke - log_name = "SM" category = "Defensive" cost = 1 /datum/spellbook_entry/lichdom name = "Bind Soul" spell_type = /obj/effect/proc_holder/spell/lichdom - log_name = "LD" category = "Defensive" is_ragin_restricted = TRUE /datum/spellbook_entry/magicm name = "Magic Missile" spell_type = /obj/effect/proc_holder/spell/projectile/magic_missile - log_name = "MM" category = "Defensive" /datum/spellbook_entry/timestop name = "Time Stop" spell_type = /obj/effect/proc_holder/spell/aoe/conjure/timestop - log_name = "TS" category = "Defensive" /datum/spellbook_entry/sacred_flame name = "Sacred Flame and Fire Immunity" spell_type = /obj/effect/proc_holder/spell/sacred_flame cost = 1 - log_name = "SF" category = "Defensive" /datum/spellbook_entry/sacred_flame/LearnSpell(mob/living/carbon/human/user, obj/item/spellbook/book, obj/effect/proc_holder/spell/newspell) @@ -248,67 +226,57 @@ /datum/spellbook_entry/knock name = "Knock" spell_type = /obj/effect/proc_holder/spell/aoe/knock - log_name = "KN" category = "Mobility" cost = 1 /datum/spellbook_entry/blink name = "Blink" spell_type = /obj/effect/proc_holder/spell/turf_teleport/blink - log_name = "BL" category = "Mobility" /datum/spellbook_entry/jaunt name = "Ethereal Jaunt" spell_type = /obj/effect/proc_holder/spell/ethereal_jaunt - log_name = "EJ" category = "Mobility" /datum/spellbook_entry/spacetime_dist name = "Spacetime Distortion" spell_type = /obj/effect/proc_holder/spell/spacetime_dist cost = 1 //Better defence than greater forcewall (maybe) but good luck hitting anyone, so 1 point. - log_name = "STD" //listen it can't be SD and no one ever sees this unless they are stat profiling category = "Mobility" /datum/spellbook_entry/greaterknock name = "Greater Knock" spell_type = /obj/effect/proc_holder/spell/aoe/knock/greater - log_name = "GK" category = "Mobility" refundable = 0 //global effect on cast /datum/spellbook_entry/mindswap name = "Mindswap" spell_type = /obj/effect/proc_holder/spell/mind_transfer - log_name = "MT" category = "Mobility" /datum/spellbook_entry/teleport name = "Teleport" spell_type = /obj/effect/proc_holder/spell/area_teleport/teleport - log_name = "TP" category = "Mobility" //Assistance /datum/spellbook_entry/charge name = "Charge" spell_type = /obj/effect/proc_holder/spell/charge - log_name = "CHG" category = "Assistance" cost = 1 /datum/spellbook_entry/summonitem name = "Summon Item" spell_type = /obj/effect/proc_holder/spell/summonitem - log_name = "IS" category = "Assistance" cost = 1 /datum/spellbook_entry/noclothes name = "Remove Clothes Requirement" spell_type = /obj/effect/proc_holder/spell/noclothes - log_name = "NC" category = "Assistance" //Rituals @@ -338,7 +306,6 @@ name = "Summon Ghosts" desc = "Spook the crew out by making them see dead people. Be warned, ghosts are capricious and occasionally vindicative, and some will use their incredibly minor abilities to frustrate you." cost = 0 - log_name = "SGH" is_ragin_restricted = TRUE /datum/spellbook_entry/summon/ghosts/Buy(mob/living/carbon/human/user, obj/item/spellbook/book) @@ -352,7 +319,6 @@ name = "Silence Ghosts" desc = "Tired of people talking behind your back, and spooking you? Why not silence them, and make the dead deader." cost = 2 - log_name = "SLG" is_ragin_restricted = TRUE //Salt needs to flow here, to be honest /datum/spellbook_entry/summon/slience_ghosts/Buy(mob/living/carbon/human/user, obj/item/spellbook/book) @@ -367,11 +333,10 @@ name = "Summon Guns" desc = "Nothing could possibly go wrong with arming a crew of lunatics just itching for an excuse to kill you. There is a good chance that they will shoot each other first. Hopefully. Gives you 2 extra spell points on purchase." cost = -2 - log_name = "SG" is_ragin_restricted = TRUE /datum/spellbook_entry/summon/guns/Buy(mob/living/carbon/human/user, obj/item/spellbook/book) - SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, log_name) + SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) rightandwrong(SUMMON_GUNS, user, 10) active = TRUE playsound(get_turf(user), 'sound/magic/castsummon.ogg', 50, TRUE) @@ -382,11 +347,10 @@ name = "Summon Magic" desc = "Share the wonders of magic with the crew and show them why they aren't to be trusted with it at the same time. Gives you 2 extra spell points on purchase." cost = -2 - log_name = "SU" is_ragin_restricted = TRUE /datum/spellbook_entry/summon/magic/Buy(mob/living/carbon/human/user, obj/item/spellbook/book) - SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, log_name) + SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) rightandwrong(SUMMON_MAGIC, user, 10) active = TRUE playsound(get_turf(user), 'sound/magic/castsummon.ogg', 50, TRUE) @@ -406,7 +370,7 @@ user.put_in_hands(new item_path) else new item_path(user.loc) - SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, log_name) + SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) return 1 /datum/spellbook_entry/item/GetInfo() @@ -421,21 +385,18 @@ name = "A Necromantic Stone" desc = "A Necromantic stone is able to resurrect three dead individuals as skeletal thralls for you to command." item_path = /obj/item/necromantic_stone - log_name = "NS" category = "Artefacts" /datum/spellbook_entry/item/scryingorb name = "Scrying Orb" desc = "An incandescent orb of crackling energy, using it will allow you to ghost while alive, allowing you to spy upon the station with ease. In addition, buying it will permanently grant you x-ray vision." item_path = /obj/item/scrying - log_name = "SO" category = "Artefacts" /datum/spellbook_entry/item/soulstones name = "Six Soul Stone Shards and the spell Artificer" desc = "Soul Stone Shards are ancient tools capable of capturing and harnessing the spirits of the dead and dying. The spell Artificer allows you to create arcane machines for the captured souls to pilot." item_path = /obj/item/storage/belt/soulstone/full - log_name = "SS" category = "Artefacts" /datum/spellbook_entry/item/soulstones/Buy(mob/living/carbon/human/user, obj/item/spellbook/book) @@ -448,7 +409,6 @@ name = "Wand Assortment" desc = "A collection of wands that allow for a wide variety of utility. Wands do not recharge, so be conservative in use. Comes in a handy belt." item_path = /obj/item/storage/belt/wands/full - log_name = "WA" category = "Artefacts" /datum/spellbook_entry/item/magic_nanny_bag @@ -465,7 +425,6 @@ name = "Cursed Heart" desc = "A heart that has been empowered with magic to heal the user. The user must ensure the heart is manually beaten or their blood circulation will suffer, but every beat heals their injuries. It must beat every 6 seconds. Not reccomended for first time wizards." item_path = /obj/item/organ/internal/heart/cursed/wizard - log_name = "CH" cost = 1 category = "Artefacts" @@ -473,14 +432,12 @@ name = "Voice of God" desc = "A magical vocal cord that can be used to yell out with the voice of a god, be it to harm, help, or confuse the target." item_path = /obj/item/organ/internal/vocal_cords/colossus/wizard - log_name = "VG" category = "Artefacts" /datum/spellbook_entry/item/warp_cubes name = "Warp Cubes" desc = "Two magic cubes, that when they are twisted in hand, teleports the user to the location of the other cube instantly. Great for silently teleporting to a fixed location, or teleporting you to an apprentice, or vice versa. Do not leave on the wizard den, it will not work." item_path = /obj/item/warp_cube/red - log_name = "WC" cost = 1 spawn_on_floor = TRUE // breaks if spawned in hand category = "Artefacts" @@ -489,7 +446,6 @@ name = "Everfull Mug" desc = "A magical mug that can be filled with omnizine at will, though beware of addiction! It can also produce alchohol and other less useful substances." item_path = /obj/item/reagent_containers/food/drinks/everfull - log_name = "EM" cost = 1 category = "Artefacts" @@ -500,7 +456,6 @@ item_path = /obj/item/clothing/suit/space/hardsuit/shielded/wizard limit = 1 category = "Weapons and Armors" - log_name = "BMA" /datum/spellbook_entry/item/battlemage_charge name = "Battlemage Armour Charges" @@ -508,20 +463,17 @@ item_path = /obj/item/wizard_armour_charge category = "Weapons and Armors" cost = 1 - log_name = "BMAC" /datum/spellbook_entry/item/mjolnir name = "Mjolnir" desc = "A mighty hammer on loan from Thor, God of Thunder. It crackles with barely contained power." item_path = /obj/item/twohanded/mjollnir - log_name = "MJ" category = "Weapons and Armors" /datum/spellbook_entry/item/singularity_hammer name = "Singularity Hammer" desc = "A hammer that creates an intensely powerful field of gravity where it strikes, pulling everything nearby to the point of impact." item_path = /obj/item/twohanded/singularityhammer - log_name = "SI" category = "Weapons and Armors" /datum/spellbook_entry/item/cursed_katana @@ -529,14 +481,12 @@ desc = "A cursed artefact, used to seal a horrible being inside the katana, which has now reformed. Can be used to make multiple powerful combos, examine it to see them. Can not be dropped. On death, you will dust." item_path = /obj/item/organ/internal/cyberimp/arm/katana cost = 1 - log_name = "CK" category = "Weapons and Armors" /datum/spellbook_entry/item/spell_blade name = "Spellblade" desc = "A magical sword that can be enchanted by using it in hand to have a unique on-hit effect. Lighting: arcs electricity between nearby targets, stunning and damaging them. Fire: creates a massive ball of fire on hit, and makes the wielder immune to fire. Bluespace: allows you to strike people from a range, teleporting you to them. Forceshield: on hit, makes you stun immune for 3 seconds and reduces damage by half." item_path = /obj/item/melee/spellblade - log_name = "SB" category = "Weapons and Armors" /datum/spellbook_entry/item/meat_hook @@ -544,7 +494,6 @@ desc = "An enchanted hook, that can be used to hook people, hurt them, and bring them right to you. Quite bulky, works well as a belt though." item_path = /obj/item/gun/magic/hook cost = 1 - log_name = "MH" category = "Weapons and Armors" //Staves @@ -552,7 +501,6 @@ name = "Staff of Door Creation" desc = "A particular staff that can mold solid metal into ornate wooden doors. Useful for getting around in the absence of other transportation. Does not work on glass." item_path = /obj/item/gun/magic/staff/door - log_name = "SD" category = "Staves" cost = 1 @@ -560,7 +508,6 @@ name = "Staff of Healing" desc = "An altruistic staff that can heal the lame and raise the dead." item_path = /obj/item/gun/magic/staff/healing - log_name = "SH" category = "Staves" cost = 1 @@ -568,7 +515,6 @@ name = "Staff of Slipping" desc = "A staff that shoots magical bananas. These bananas will either slip or stun the target when hit. Surprisingly reliable!" item_path = /obj/item/gun/magic/staff/slipping - log_name = "SL" category = "Staves" cost = 1 @@ -576,14 +522,12 @@ name = "Staff of Animation" desc = "An arcane staff capable of shooting bolts of eldritch energy which cause inanimate objects to come to life. This magic doesn't affect machines." item_path = /obj/item/gun/magic/staff/animate - log_name = "SA" category = "Staves" /datum/spellbook_entry/item/staffchange name = "Staff of Change" desc = "An artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself." item_path = /obj/item/gun/magic/staff/change - log_name = "ST" category = "Staves" is_ragin_restricted = TRUE @@ -591,7 +535,6 @@ name = "Staff of Chaos" desc = "A caprious tool that can fire all sorts of magic without any rhyme or reason. Using it on people you care about is not recommended." item_path = /obj/item/gun/magic/staff/chaos - log_name = "SC" category = "Staves" //Summons @@ -599,7 +542,6 @@ name = "Bottle of Ooze" desc = "A bottle of magically infused ooze, which will awake an all-consuming Morph, capable of cunningly disguising itself as any object it comes in contact with and even casting some very basic spells. Be careful though, as Morph diet includes Wizards." item_path = /obj/item/antag_spawner/morph - log_name = "BO" category = "Summons" limit = 3 cost = 1 @@ -614,7 +556,6 @@ damaging. The crew's reaction to the other hand could be very \ destructive." item_path = /obj/item/antag_spawner/slaughter_demon/laughter - log_name = "HB" category = "Summons" limit = 3 cost = 1 // Non-destructive; it's just a jape, sibling! @@ -623,7 +564,6 @@ name = "Bottle of Blood" desc = "A bottle of magically infused blood, the smell of which will attract extradimensional beings when broken. Be careful though, the kinds of creatures summoned by blood magic are indiscriminate in their killing, and you yourself may become a victim." item_path = /obj/item/antag_spawner/slaughter_demon - log_name = "BB" category = "Summons" limit = 3 @@ -631,7 +571,6 @@ name = "Bottle of Shadows" desc = "A bottle of pure darkness, the smell of which will attract extradimensional beings when broken. Be careful though, the kinds of creatures summoned from the shadows are indiscriminate in their killing, and you yourself may become a victim." item_path = /obj/item/antag_spawner/slaughter_demon/shadow - log_name = "BOS" category = "Summons" limit = 3 cost = 1 //Unless you blackout the station this ain't going to do much, wizard doesn't get NV, still dies easily to a group of 2 and it doesn't eat bodies. @@ -640,7 +579,6 @@ name = "Bottle of Ectoplasm" desc = "A magically infused bottle of ectoplasm, effectively pure salt from the spectral realm. Be careful though, these salty spirits are indiscriminate in their harvesting, and you yourself may become a victim." item_path = /obj/item/antag_spawner/revenant - log_name = "RB" category = "Summons" limit = 3 cost = 1 //Needs essence to live. Needs crew to die for essence, doubt xenobio will be making many monkeys. As such, weaker. Also can hardstun the wizard. @@ -649,7 +587,6 @@ name = "Contract of Apprenticeship" desc = "A magical contract binding an apprentice wizard to your service, using it will summon them to your side." item_path = /obj/item/contract - log_name = "CT" category = "Summons" /datum/spellbook_entry/item/tarotdeck @@ -657,7 +594,6 @@ desc = "A deck of guardian tarot cards, capable of binding a personal guardian to your body. There are multiple types of guardian available, but all of them will transfer some amount of damage to you. \ It would be wise to avoid buying these with anything capable of causing you to swap bodies with others." item_path = /obj/item/guardiancreator - log_name = "TD" category = "Summons" limit = 1 diff --git a/code/game/gamemodes/wizard/wizloadouts.dm b/code/game/gamemodes/wizard/wizloadouts.dm index f229db22367..88e58ed8a38 100644 --- a/code/game/gamemodes/wizard/wizloadouts.dm +++ b/code/game/gamemodes/wizard/wizloadouts.dm @@ -2,33 +2,30 @@ //Standard loadouts, which are meant to be suggestions for beginners. Should always be worth exactly 10 spell points, and only contain standard wizard spells/items. /datum/spellbook_entry/loadout/mutant - name = "Offense Focus : Mutant" + name = "Offense Focus - Mutant" desc = "A spellset focused around the Mutate spell as its main source of damage, which provides stun protection, laser eyes, and strong punches.
\ Ethereal Jaunt and Blink provide escape and mobility, while Magic Missile and Disintegrate can be used together for dangerous or key targets.
\ As this set lacks any form of healing or resurrection, healing items should be acquired from the station, and you should be careful to avoid being hurt in the first place.

\ Provides Mutate, Ethereal Jaunt, Blink, Magic Missile, and Disintegrate." - log_name = "OM" spells_path = list(/obj/effect/proc_holder/spell/genetic/mutate, /obj/effect/proc_holder/spell/ethereal_jaunt, /obj/effect/proc_holder/spell/turf_teleport/blink, \ /obj/effect/proc_holder/spell/projectile/magic_missile, /obj/effect/proc_holder/spell/touch/disintegrate) /datum/spellbook_entry/loadout/lich - name = "Defense Focus : Lich" + name = "Defense Focus - Lich" desc = "This spellset uses the Bind Soul spell to safeguard your life as a lich and allow for more dangerous offensive spells to be used.
\ Ethereal Jaunt provides escape, Fireball and Rod Form are your offensive spells, and Disable Tech and Forcewall provides utility in disabling sec equipment or blocking their path.
\ Care should be taken in hiding the item you choose as your phylactery after using Bind Soul, as you cannot revive if it destroyed or too far from your body!

\
Provides Bind Soul, Ethereal Jaunt, Fireball, Rod Form, Disable Tech, and Greater Forcewall." - log_name = "DL" spells_path = list(/obj/effect/proc_holder/spell/lichdom, /obj/effect/proc_holder/spell/ethereal_jaunt, /obj/effect/proc_holder/spell/fireball, \ /obj/effect/proc_holder/spell/rod_form, /obj/effect/proc_holder/spell/emplosion/disable_tech, /obj/effect/proc_holder/spell/forcewall) is_ragin_restricted = TRUE /datum/spellbook_entry/loadout/wands - name = "Utility Focus : Wands" + name = "Utility Focus - Wands" desc = "This set contain a Belt of Wands, providing offensive, defensive, and utility wands. Wands have limited charges, but can be partially recharged with the Charge spell included.
\ Ethereal Jaunt and Blink provide escape and mobility, while Disintegrate and Repulse can be used to annihilate or push away anyone that gets too close to you.
\ Do not lose any of your wands to the station's crew, as they are extremely deadly even in their hands. Remember that the Revive wand can be used on yourself for a full heal!

\
Provides a Belt of Wands, Charge, Ethereal Jaunt, Blink, Repulse, and Disintegrate." - log_name = "UW" items_path = list(/obj/item/storage/belt/wands/full) spells_path = list(/obj/effect/proc_holder/spell/charge, /obj/effect/proc_holder/spell/ethereal_jaunt, /obj/effect/proc_holder/spell/turf_teleport/blink, \ /obj/effect/proc_holder/spell/aoe/repulse, /obj/effect/proc_holder/spell/touch/disintegrate) @@ -38,7 +35,6 @@ name = "Silencio" desc = "...

\
Provides Finger Gun and Invisible Greater Wall manuals, Mime Robes, a Cane and Duct Tape, Ethereal Jaunt, Blink, Teleport, Mime Malaise, Knock, and Stop Time." - log_name = "SHH" items_path = list(/obj/item/spellbook/oneuse/mime/fingergun, /obj/item/spellbook/oneuse/mime/greaterwall, /obj/item/clothing/suit/wizrobe/mime, /obj/item/clothing/head/wizard/mime, \ /obj/item/clothing/mask/gas/mime/wizard, /obj/item/clothing/shoes/sandal/marisa, /obj/item/cane, /obj/item/stack/tape_roll) spells_path = list(/obj/effect/proc_holder/spell/ethereal_jaunt, /obj/effect/proc_holder/spell/turf_teleport/blink, /obj/effect/proc_holder/spell/area_teleport/teleport, \ @@ -57,7 +53,6 @@ Bring them to the afterlife, one trigger pull at a time.
\ You will likely need to scavenge additional ammo or weapons aboard the station.

\
Provides a .357 Revolver, 4 speedloaders of ammo, Ethereal Jaunt, Blink, Summon Item, No Clothes, and Bind Soul, with a unique outfit." - log_name = "GR" items_path = list(/obj/item/gun/projectile/revolver, /obj/item/ammo_box/a357, /obj/item/ammo_box/a357, /obj/item/ammo_box/a357, /obj/item/ammo_box/a357, /obj/item/clothing/under/syndicate) spells_path = list(/obj/effect/proc_holder/spell/ethereal_jaunt, /obj/effect/proc_holder/spell/turf_teleport/blink, \ /obj/effect/proc_holder/spell/summonitem, /obj/effect/proc_holder/spell/noclothes, /obj/effect/proc_holder/spell/lichdom/gunslinger) @@ -77,7 +72,6 @@ Open His Grace's latch once you are ready to kill by using It in your hand. Keep It fed or you will be Its next meal.
\ You might want to raid the Armory or loot a Security Officer to get ranged weapons like a disabler, His Grace's Hunger has little patience.

\
Provides His Grace, an Ancient Jumpsuit, an Assistant ID, a Gas Mask and Shoes, Insulated Gloves, a full Toolbelt, Ethereal Jaunt, Force Wall, Knock and No Clothes." - log_name = "GT" items_path = list(/obj/item/his_grace, /obj/item/clothing/under/color/grey/glorf, /obj/item/clothing/mask/gas, /obj/item/clothing/shoes/black, \ /obj/item/clothing/gloves/color/yellow, /obj/item/storage/belt/utility/full/multitool) spells_path = list(/obj/effect/proc_holder/spell/ethereal_jaunt, /obj/effect/proc_holder/spell/forcewall, \ diff --git a/code/modules/unit_tests/purchase_reference_test.dm b/code/modules/unit_tests/purchase_reference_test.dm index d5547dbc5e9..91dca4b846a 100644 --- a/code/modules/unit_tests/purchase_reference_test.dm +++ b/code/modules/unit_tests/purchase_reference_test.dm @@ -12,17 +12,3 @@ Fail("uplink reference [uplink_ref] is used multiple times") uplink_refs += uplink_ref -/datum/unit_test/spellbook_refs/Run() - var/list/spell_refs = list() - var/list/blacklist = list(/datum/spellbook_entry/summon, - /datum/spellbook_entry/item, - /datum/spellbook_entry/loadout,) - for(var/datum/spellbook_entry/entry as anything in subtypesof(/datum/spellbook_entry) - blacklist) - var/spell_ref = initial(entry.log_name) - if(isnull(spell_ref)) - Fail("spellbook entry [initial(entry.name)] has no reference") - continue - if(spell_ref in spell_refs) - Fail("spellbook reference [spell_ref] is used multiple times") - spell_refs += spell_ref - diff --git a/tools/wizard_spell_converter/spell_converter.json b/tools/wizard_spell_converter/spell_converter.json new file mode 100644 index 00000000000..798cd58cde5 --- /dev/null +++ b/tools/wizard_spell_converter/spell_converter.json @@ -0,0 +1,74 @@ +{ + "HS": "Mastercrafted Armor Set", + "GFW": "Greater Force Wall", + + "BMAC": "Battlemage Armour Charges", + "STD": "Spacetime Distortion", + "CHG": "Charge", + "BMA": "Battlemage Armour", + "BOS": "Bottle of Shadows", + "SHH": "Silencio", + "SGH": "Summon Ghosts", + "SLG": "Silence Ghosts", + "BD": "Blind", + "LB": "Lightning Bolt", + "CC": "Curse of the Cluwne", + "BT": "Banana Touch", + "MI": "Mime Malaise", + "HH": "Curse of the Horseman", + "DG": "Disintegrate", + "FB": "Fireball", + "FS": "Flesh to Stone", + "MU": "Mutate", + "RF": "Rod Form", + "IG": "Lesser Summon Guns", + "DT": "Disable Tech", + "FW": "Force Wall", + "RS": "Rathen's Secret", + "RP": "Repulse", + "SM": "Smoke", + "LD": "Bind Soul", + "MM": "Magic Missile", + "TS": "Time Stop", + "SF": "Sacred Flame and Fire Immunity", + "KN": "Knock", + "BL": "Blink", + "EJ": "Ethereal Jaunt", + "GK": "Greater Knock", + "MT": "Mindswap", + "TP": "Teleport", + "IS": "Summon Item", + "NC": "Remove Clothes Requirement", + "SG": "Summon Guns", + "SU": "Summon Magic", + "NS": "A Necromantic Stone", + "SO": "Scrying Orb", + "SS": "Six Soul Stone Shards and the spell Artificer", + "WA": "Wand Assortment", + "CH": "Cursed Heart", + "VG": "Voice of God", + "WC": "Warp Cubes", + "EM": "Everfull Mug", + "MJ": "Mjolnir", + "SI": "Singularity Hammer", + "CK": "Cursed Katana", + "SB": "Spellblade", + "MH": "Meat hook", + "SD": "Staff of Door Creation", + "SH": "Staff of Healing", + "SL": "Staff of Slipping", + "SA": "Staff of Animation", + "ST": "Staff of Change", + "SC": "Staff of Chaos", + "BO": "Bottle of Ooze", + "HB": "Bottle of Tickles", + "BB": "Bottle of Blood", + "RB": "Bottle of Ectoplasm", + "CT": "Contract of Apprenticeship", + "TD": "Guardian Deck", + "OM": "Offense Focus - Mutant", + "DL": "Defense Focus - Lich", + "UW": "Utility Focus - Wands", + "GR": "Gunslinging Reaper", + "GT": "Tyde the Grey" +} diff --git a/tools/wizard_spell_converter/spell_converter.py b/tools/wizard_spell_converter/spell_converter.py new file mode 100644 index 00000000000..2dbcf216b35 --- /dev/null +++ b/tools/wizard_spell_converter/spell_converter.py @@ -0,0 +1,40 @@ +import mysql.connector, argparse, json, time, sys +from mysql.connector import errorcode + +parser = argparse.ArgumentParser() +parser.add_argument("--address", help="SQL server address (Use 127.0.0.1 for the current computer)") +parser.add_argument("--username", help="SQL login username") +parser.add_argument("--password", help="SQL login password") +parser.add_argument("--database", help="Database name (Default: paradise_gamedb)") + +args = parser.parse_args() + +try: + db = mysql.connector.connect(host=args.address, user=args.username, password=args.password, database=args.database) +except mysql.connector.Error as exception: + if exception.errno == errorcode.ER_ACCESS_DENIED_ERROR: + print("Provided username and/or password invalid.") + elif exception.errno == errorcode.ER_BAD_DB_ERROR: + print("Database does not exist.") + else: + print(exception) + sys.exit() + +cursor = db.cursor() + +startwatch = time.time() + +try: + with open('spell_converter.json') as json_file: + convert_dict = json.load(json_file) +except FileNotFoundError: + print("Could not find the conversion file. Please make sure you're running the script from tools/wizard_spell_converter/, not the repo root!") + sys.exit() + +for spell in convert_dict: + query = "UPDATE feedback SET json = replace(json, %s, %s) WHERE key_name = 'wizard_spell_learned'" + cursor.execute(query, (spell, convert_dict[spell])) +db.commit() + +stopwatch = time.time() +print("Database updated in {} seconds!".format(round(stopwatch - startwatch)))