Logs wizard spell names instead of initialisms to the DB (#21136)

* improve wizard feedback data

* review 1

* readability improvement
This commit is contained in:
Edan
2023-06-05 18:30:36 +01:00
committed by GitHub
parent 3c3264dc08
commit a168bf68ac
5 changed files with 121 additions and 91 deletions
+4 -68
View File
@@ -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, "<span class='notice'>You have learned [newspell.name].</span>")
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
+3 -9
View File
@@ -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. <br> \
Ethereal Jaunt and Blink provide escape and mobility, while Magic Missile and Disintegrate can be used together for dangerous or key targets. <br> \
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. <br><br> \
</i>Provides Mutate, Ethereal Jaunt, Blink, Magic Missile, and Disintegrate.<i>"
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. <br> \
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. <br> \
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! <br><br> \
</i>Provides Bind Soul, Ethereal Jaunt, Fireball, Rod Form, Disable Tech, and Greater Forcewall.<i>"
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. <br> \
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. <br> \
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! <br><br> \
</i>Provides a Belt of Wands, Charge, Ethereal Jaunt, Blink, Repulse, and Disintegrate.<i>"
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 = "...<br><br> \
</i>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.<i>"
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. <br> \
You will likely need to scavenge additional ammo or weapons aboard the station. <br><br>\
</i>Provides a .357 Revolver, 4 speedloaders of ammo, Ethereal Jaunt, Blink, Summon Item, No Clothes, and Bind Soul, with a unique outfit.<i>"
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.<br> \
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.<br><br> \
</i>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.<i>"
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, \
@@ -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
@@ -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"
}
@@ -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)))