Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Arcane Spellcasting Update #50

Merged
merged 44 commits into from
Sep 7, 2024
Merged
Show file tree
Hide file tree
Changes from 26 commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
d13f4fe
Create arcane.dm
tioluko Aug 30, 2024
0937829
Create arcane_spells.dm
tioluko Aug 30, 2024
acde756
addon for _roguetown.dm to help separating arcane and divine spells
tioluko Aug 30, 2024
895f2e2
arcane spell list
tioluko Aug 30, 2024
2a974a1
Update arcane.dm
tioluko Aug 31, 2024
54f8656
Arcane spell list
tioluko Aug 31, 2024
44c0d19
Just making the new spell icons to work
tioluko Aug 31, 2024
88eaa93
Updated icons
tioluko Aug 31, 2024
73e7318
Fix swap and add Telepathy
tioluko Sep 1, 2024
cb31511
Update arcane_spells.dm
tioluko Sep 1, 2024
73a06c0
Merge branch 'russ-money:main' into main
tioluko Sep 1, 2024
e00abe6
Merge branch 'russ-money:main' into main
tioluko Sep 1, 2024
1d8952d
Merge branch 'russ-money:main' into main
tioluko Sep 2, 2024
bc7defe
Making these new icons work was a pain
tioluko Sep 3, 2024
0d63c86
Arcane magic specifics
tioluko Sep 3, 2024
eea6b66
The actual Arcane spell-list
tioluko Sep 3, 2024
e586eb4
Backup just in case everything goes to shit
tioluko Sep 3, 2024
1d55780
New Spell Icons
tioluko Sep 3, 2024
69dbb3c
Randomized spell selection
tioluko Sep 3, 2024
4097326
Randomized spell selection
tioluko Sep 3, 2024
4466781
Create duskblade.dm
tioluko Sep 3, 2024
c87c967
New rare class I did for fun, feel free to ignore
tioluko Sep 3, 2024
185a2f3
Randomized spell selection
tioluko Sep 3, 2024
8d96b7e
Change to the claw spell
tioluko Sep 3, 2024
c884b61
Small edit to work with the claw skill
tioluko Sep 3, 2024
84d5c9e
New spell icons
tioluko Sep 3, 2024
e1daa5e
Just organizing
tioluko Sep 4, 2024
2ed389a
From single file to a entire folder
tioluko Sep 4, 2024
a88eceb
organizing spelllist
tioluko Sep 5, 2024
40ddacd
organizing spelllist
tioluko Sep 5, 2024
285f3c5
organizing spelllist
tioluko Sep 5, 2024
fb1eb8b
organizing spelllist
tioluko Sep 5, 2024
e974918
organizing spelllist
tioluko Sep 5, 2024
763f27f
adding 1 arcane because he has fetch
tioluko Sep 5, 2024
e877bd6
organizing spelllist
tioluko Sep 5, 2024
a1e5834
organizing spelllist
tioluko Sep 5, 2024
39b2a9b
organizing spelllist
tioluko Sep 5, 2024
c37d4bb
not necessary for this pull
tioluko Sep 5, 2024
c3e9f0f
tiny fix
tioluko Sep 5, 2024
f0b72e6
Merge branch 'russ-money:main' into main
tioluko Sep 5, 2024
0c93af2
shit was busted
tioluko Sep 6, 2024
15d7b1c
Merge branch 'russ-money:main' into main
tioluko Sep 7, 2024
e15d48a
Merge branch 'russ-money:main' into main
tioluko Sep 7, 2024
4750259
Update roguetown.dme
tioluko Sep 7, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@

message_admins("WEREWOLF: [werewolf_player.wolfname] howls: [message]")

//Old version, ugly and no feedback with the new icons
/obj/effect/proc_holder/spell/self/claws
name = "Lupine Claws"
desc = "!"
Expand Down Expand Up @@ -62,4 +63,32 @@
user.put_in_hands(r, TRUE, FALSE, TRUE)
//user.visible_message("Your claws extend.", "You feel your claws extending.", "You hear a sound of claws extending.")
extended = TRUE


//New version (to work nicely with the new icons)
/obj/effect/proc_holder/spell/invoked/claws
name = "Lupine Claws"
desc = "!"
overlay_state = "claws"
antimagic_allowed = TRUE
charge_max = 20 //2 seconds
var/extended = FALSE
var/obj/item/rogueweapon/werewolf_claw/left/l
var/obj/item/rogueweapon/werewolf_claw/right/r

/obj/effect/proc_holder/spell/invoked/claws/on_activation(mob/user = usr)
l = new(user,1)
r = new(user,2)
user.put_in_hands(l, TRUE, FALSE, TRUE)
user.put_in_hands(r, TRUE, FALSE, TRUE)
//user.visible_message("Your claws extend.", "You feel your claws extending.", "You hear a sound of claws extending.")
extended = TRUE

/obj/effect/proc_holder/spell/invoked/claws/on_deactivation(mob/user = usr)
l = user.get_active_held_item()
r = user.get_inactive_held_item()
user.dropItemToGround(l, TRUE)
user.dropItemToGround(r, TRUE)
qdel(l)
qdel(r)
//user.visible_message("Your claws retract.", "You feel your claws retracting.", "You hear a sound of claws retracting.")
extended = FALSE
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@
W.mind.adjust_skillrank(/datum/skill/misc/climbing, 6, TRUE)

W.AddSpell(new /obj/effect/proc_holder/spell/self/howl)
W.AddSpell(new /obj/effect/proc_holder/spell/self/claws)
W.AddSpell(new /obj/effect/proc_holder/spell/invoked/claws)

ADD_TRAIT(src, TRAIT_NOSLEEP, TRAIT_GENERIC)

Expand Down Expand Up @@ -171,7 +171,7 @@
W.mind.skill_experience = WA.stored_experience.Copy()

W.RemoveSpell(new /obj/effect/proc_holder/spell/self/howl)
W.RemoveSpell(new /obj/effect/proc_holder/spell/self/claws)
W.RemoveSpell(new /obj/effect/proc_holder/spell/invoked/claws)

W.regenerate_icons()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,20 @@
H.change_stat("intelligence", 3)
H.change_stat("constitution", 1)
H.change_stat("endurance", -1)
H.mind.AddSpell(new /obj/effect/proc_holder/spell/invoked/projectile/fireball)
H.mind.AddSpell(new /obj/effect/proc_holder/spell/invoked/projectile/lightningbolt)
H.mind.AddSpell(new /obj/effect/proc_holder/spell/invoked/projectile/fetch)
var/list/possible_spells = list(
"/obj/effect/proc_holder/spell/arcane/telepathy",
"/obj/effect/proc_holder/spell/arcane/ignite",
"/obj/effect/proc_holder/spell/arcane/blink",
"/obj/effect/proc_holder/spell/arcane/swap",
"/obj/effect/proc_holder/spell/arcane/smokescreen",
"/obj/effect/proc_holder/spell/arcane/blindness",
"/obj/effect/proc_holder/spell/arcane/invisibility",
"/obj/effect/proc_holder/spell/arcane/projectile/fetch"
)
H.mind.AddSpell(pick(new /obj/effect/proc_holder/spell/arcane/projectile/fireball,new /obj/effect/proc_holder/spell/arcane/projectile/lightningbolt))
for(var/i=2,i>0,i--)
var/random_item = pick(possible_spells)
var typepath = text2path(random_item)
H.mind.AddSpell(new typepath)
possible_spells.Remove(random_item)
possible_spells = null
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
//duskblade

/datum/advclass/duskblade
name = "Duskblade"
tutorial = "The duskblade blurs the line between spellcaster and warrior,\
marrying the power of magic with hand-to-hand combat prowess. A student of ancient elven spellcasting techniques,\
the duskblade combines arcane spellcasting with the combat skills of a fighter."
allowed_races = list(
"Humen",
"Elf",
"Half-Elf",
"Dwarf",
"Tiefling",
"Argonian",
"Dark Elf",
"Aasimar",
"Half Orc"
)
outfit = /datum/outfit/job/roguetown/adventurer/dblade
pickprob = 11
traits_applied = list(TRAIT_MEDIUMARMOR, TRAIT_DODGEEXPERT)
category_tags = list(CTAG_ADVENTURER)


/datum/outfit/job/roguetown/adventurer/dblade/pre_equip(mob/living/carbon/human/H)
..()
H.mind.adjust_skillrank(/datum/skill/combat/crossbows, rand(1,2), TRUE)
H.mind.adjust_skillrank(/datum/skill/combat/polearms, 1, TRUE)
H.mind.adjust_skillrank(/datum/skill/combat/maces, 1, TRUE)
H.mind.adjust_skillrank(/datum/skill/combat/axes, 1, TRUE)
H.mind.adjust_skillrank(/datum/skill/combat/bows, 1, TRUE)
H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 2, TRUE)
H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 1, TRUE)
H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE)
H.mind.adjust_skillrank(/datum/skill/combat/swords, 3, TRUE)
H.mind.adjust_skillrank(/datum/skill/combat/knives, rand(1,2), TRUE)
H.mind.adjust_skillrank(/datum/skill/misc/sneaking, 1, TRUE)
H.mind.adjust_skillrank(/datum/skill/misc/swimming, 1, TRUE)
H.mind.adjust_skillrank(/datum/skill/misc/climbing, 2, TRUE)
H.mind.adjust_skillrank(/datum/skill/misc/riding, pick(1,2), TRUE)
H.mind.adjust_skillrank(/datum/skill/misc/medicine, 1, TRUE)
H.mind.adjust_skillrank(/datum/skill/misc/reading, 2, TRUE)
H.mind.adjust_skillrank(/datum/skill/misc/alchemy, 1, TRUE)
H.mind.adjust_skillrank(/datum/skill/magic/arcane, 1, TRUE)
H.mind.adjust_skillrank(/datum/skill/misc/medicine, 1, TRUE)
if(H.age == AGE_OLD)
H.mind.adjust_skillrank(/datum/skill/magic/arcane, pick(1,2,3), TRUE)
H.change_stat("strength", 2)
H.change_stat("endurance", 1)
H.change_stat("constitution", 1)
H.change_stat("intelligence", 2)
H.change_stat("speed", 1)
shoes = /obj/item/clothing/shoes/roguetown/boots
gloves = /obj/item/clothing/gloves/roguetown/leather
belt = /obj/item/storage/belt/rogue/leather
neck = /obj/item/storage/belt/rogue/pouch/coins/poor
shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt/random
if(prob(70))
armor = /obj/item/clothing/suit/roguetown/armor/chainmail/hauberk
else if(prob(50))
armor = /obj/item/clothing/suit/roguetown/armor/plate/half/iron
else
armor = /obj/item/clothing/suit/roguetown/armor/plate/scale
if(prob(25))
mask = /obj/item/clothing/mask/rogue/facemask
backl = /obj/item/storage/backpack/rogue/satchel
backr = /obj/item/rogueweapon/shield/wood
beltl = /obj/item/rogueweapon/huntingknife
if(prob(50))
beltr = /obj/item/rogueweapon/sword/iron
else
beltr = /obj/item/rogueweapon/sword/sabre
if(H.gender == MALE)
pants = /obj/item/clothing/under/roguetown/tights/black
else
H.underwear = "Femleotard"
H.underwear_color = CLOTHING_BLACK
H.update_body()
pants = /obj/item/clothing/under/roguetown/tights/black

var/list/possible_spells = list(
"/obj/effect/proc_holder/spell/arcane/telepathy",
"/obj/effect/proc_holder/spell/arcane/ignite",
"/obj/effect/proc_holder/spell/arcane/blink",
"/obj/effect/proc_holder/spell/arcane/swap",
"/obj/effect/proc_holder/spell/arcane/smokescreen",
"/obj/effect/proc_holder/spell/arcane/blindness",
"/obj/effect/proc_holder/spell/arcane/invisibility",
"/obj/effect/proc_holder/spell/arcane/projectile/fetch"
)
H.mind.AddSpell(pick(new /obj/effect/proc_holder/spell/arcane/projectile/fireball,new /obj/effect/proc_holder/spell/arcane/projectile/lightningbolt))
var/random_item = pick(possible_spells)
var typepath = text2path(random_item)
H.mind.AddSpell(new typepath)
possible_spells = null

ADD_TRAIT(H, TRAIT_HEAVYARMOR, TRAIT_GENERIC)
ADD_TRAIT(H, TRAIT_MEDIUMARMOR, TRAIT_GENERIC)
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
backl = /obj/item/storage/backpack/rogue/satchel
beltr = /obj/item/reagent_containers/glass/bottle/rogue/manapot
beltl = /obj/item/rogueweapon/huntingknife
neck = /obj/item/storage/belt/rogue/pouch/coins/poor
neck = /obj/item/storage/belt/rogue/pouch/coins/poor
r_hand = /obj/item/rogueweapon/woodstaff
if(H.mind)
H.mind.adjust_skillrank(/datum/skill/combat/polearms, 1, TRUE)
Expand All @@ -47,6 +47,20 @@
H.change_stat("strength", -1)
H.change_stat("intelligence", 4)
H.change_stat("speed", 1)
H.mind.AddSpell(new /obj/effect/proc_holder/spell/invoked/projectile/fireball)
H.mind.AddSpell(new /obj/effect/proc_holder/spell/invoked/projectile/lightningbolt)
H.mind.AddSpell(new /obj/effect/proc_holder/spell/invoked/projectile/fetch)
var/list/possible_spells = list(
"/obj/effect/proc_holder/spell/arcane/telepathy",
"/obj/effect/proc_holder/spell/arcane/ignite",
"/obj/effect/proc_holder/spell/arcane/blink",
"/obj/effect/proc_holder/spell/arcane/swap",
"/obj/effect/proc_holder/spell/arcane/smokescreen",
"/obj/effect/proc_holder/spell/arcane/blindness",
"/obj/effect/proc_holder/spell/arcane/invisibility",
"/obj/effect/proc_holder/spell/arcane/projectile/fetch"
)
H.mind.AddSpell(pick(new /obj/effect/proc_holder/spell/arcane/projectile/fireball,new /obj/effect/proc_holder/spell/arcane/projectile/lightningbolt))
for(var/i=2,i>0,i--)
var/random_item = pick(possible_spells)
var typepath = text2path(random_item)
H.mind.AddSpell(new typepath)
possible_spells.Remove(random_item)
possible_spells = null
22 changes: 21 additions & 1 deletion code/modules/jobs/job_types/roguetown/courtier/magician.dm
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
"Half-Elf",
"Aasimar",
)
spells = list(/obj/effect/proc_holder/spell/invoked/projectile/fireball/greater, /obj/effect/proc_holder/spell/invoked/projectile/fireball, /obj/effect/proc_holder/spell/invoked/projectile/lightningbolt, /obj/effect/proc_holder/spell/invoked/projectile/fetch)
display_order = JDO_MAGICIAN
tutorial = "Your creed is one dedicated to the conquering of the arcane arts and the constant thrill of knowledge. \
You owe your life to the Lord, for it was his coin that allowed you to continue your studies in these dark times. \
Expand Down Expand Up @@ -70,3 +69,24 @@
head = /obj/item/clothing/head/roguetown/wizhat
armor = /obj/item/clothing/suit/roguetown/shirt/robe/wizard
H.dna.species.soundpack_m = new /datum/voicepack/male/wizard()

var/list/possible_spells = list(
"/obj/effect/proc_holder/spell/arcane/telepathy",
"/obj/effect/proc_holder/spell/arcane/ignite",
"/obj/effect/proc_holder/spell/arcane/blink",
"/obj/effect/proc_holder/spell/arcane/swap",
"/obj/effect/proc_holder/spell/arcane/smokescreen",
"/obj/effect/proc_holder/spell/arcane/projectile/lightningbolt",
"/obj/effect/proc_holder/spell/arcane/projectile/fireball",
"/obj/effect/proc_holder/spell/arcane/blindness",
"/obj/effect/proc_holder/spell/arcane/invisibility",
"/obj/effect/proc_holder/spell/arcane/projectile/fetch"
)
H.mind.AddSpell(new /obj/effect/proc_holder/spell/arcane/projectile/fireball/greater)
for(var/i=3,i>0,i--)
var/random_item = pick(possible_spells)
var typepath = text2path(random_item)
H.mind.AddSpell(new typepath)
possible_spells.Remove(random_item)
possible_spells = null

23 changes: 20 additions & 3 deletions code/modules/spells/roguetown/_roguetown.dm
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,29 @@
invocation_type = "shout"
var/active_sound

//Old update icon
///obj/effect/proc_holder/spell/update_icon()
// if(!action)
// return
// action.button_icon_state = "[base_icon_state][active]"
// if(overlay_state)
// action.overlay_state = overlay_state
// action.name = name
// action.UpdateButtonIcon()

//That is a ugly way of checking it the spell is a mmb cast or not and I know it...
//But it's what worked better so far for some reason.
/obj/effect/proc_holder/spell/update_icon()
if(!action)
return
action.button_icon_state = "[base_icon_state][active]"
if(overlay_state)
action.overlay_state = overlay_state
action.button_icon_state = base_icon_state
if (selection_type == "view")
if(overlay_state)
action.overlay_state = "[overlay_state]1"
else
action.button_icon_state = "[base_icon_state][active]"
if(overlay_state)
action.overlay_state = "[overlay_state][active]"
action.name = name
action.UpdateButtonIcon()

Expand Down
Loading