Samuel - Master of Dark Arts (WIP)
- smr1957
- Joined: Tue Nov 01, 2022 10:25 pm
- Location: Florida, United States
- Contact:
Re: Samuel - Master of Dark Arts (WIP)
Definitely some very nice shots! And the mod really looks impressive!
As does Albert's!
As does Albert's!
- These users thanked the author smr1957 for the post (total 2):
- Selene310187, Altbert
- Selene310187
- Site Admin
- Joined: Fri Oct 07, 2022 8:34 pm
- Contact:
Re: Samuel - Master of Dark Arts (WIP)
I edited the second paragraph of main post of the thread and added the fact that I totally forgot that I had another character between Samuel and Alice. Scalez is actually my fourth Skyrim character. The character I forgot was Nephis, a test character for a custom race for Oldrim that I never finished. I just checked my external harddrive and the project files are still there after all those years. The name of the unfinished race is Nova Race. This could be an idea for a future project for the Special Edition. As you may know, I have a lot of things in the backlog for various games due to several problems (time management, problems with prioritization, etc.). So I don't know when and if I continue the work on the Nova Race.
Thanks . I took the first screenshot on the floating island as well just as some other screenshots which I will show you with the release of the finished mod. I spontaneously decided to take the screenshots there because Scalez and Samuel didn't want to leave this place for the time being .
Thank you .
Yes, definitely. I will play it more extensively (i.e. the quests) when I have finished the follower mod.
- These users thanked the author Selene310187 for the post:
- Altbert
- Selene310187
- Site Admin
- Joined: Fri Oct 07, 2022 8:34 pm
- Contact:
Re: Samuel - Master of Dark Arts (WIP)
Samuel's signature spell is done. It does 25 points of damage to the target's health and there is a 33 % chance that one of the following additional effects is applied to the target:
I also finished the assignation of the different combat styles (Mage, Spellsword, Two-Handed and Missile aka Archer) which happens automatically when the follower equips the corresponding weapon. So if Samuel equips a one-handed sword, his combat style changes to Spellsword, and if you remove the weapon from his inventory, the combat style changes back to Mage which is his default combat style. And he equips any weapon that you put in his inventory instantly.
Edit:
I will make the combat style auto-assignation and the auto-equip weapon feature both toggleable. If you prefer the combat style handling of AFT for example, you can turn the combat style auto-assignation off anytime.
Equip weapon and ammo automatically and execute the UpdateCombatSkills function:
Execute the UpdateCombatSkills function when a weapon is removed:
The UpdateCombatSkills function modifies the combat skills according to the type of the equipped weapons (GetEquippedItemType):
The CombatStyleGlobal is used as a condition for each combat package (which is set to "Interrupt Override: Combat"; Template: Hold Position; Location: near package start location; Radius: 2500; and the Combat Style of your choice). The packages are part of a formlist which is assigned as Combat Override Package list to the ReferenceAlias of Samuel (see Quest Alias Tab).
- pushes the target away
- paralysis the target for 10 seconds
- depletes all magicka of the target for 10 seconds
I also finished the assignation of the different combat styles (Mage, Spellsword, Two-Handed and Missile aka Archer) which happens automatically when the follower equips the corresponding weapon. So if Samuel equips a one-handed sword, his combat style changes to Spellsword, and if you remove the weapon from his inventory, the combat style changes back to Mage which is his default combat style. And he equips any weapon that you put in his inventory instantly.
Edit:
I will make the combat style auto-assignation and the auto-equip weapon feature both toggleable. If you prefer the combat style handling of AFT for example, you can turn the combat style auto-assignation off anytime.
Papyrus code snippets for those who are interested in the technical details
Equip weapon and ammo automatically and execute the UpdateCombatSkills function:
Code: Select all
Actor Property Samuel Auto
Actor Property PlayerRef Auto
Event OnItemAdded(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akSourceContainer)
if akSourceContainer == PlayerRef
if (akBaseItem as Weapon) || (akBaseItem as Ammo)
Samuel.equipitem(akBaseItem)
endif
UpdateCombatSkills()
endif
EndEvent
Execute the UpdateCombatSkills function when a weapon is removed:
Code: Select all
Event OnItemRemoved(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akDestContainer)
if akDestContainer == PlayerRef
if (akBaseItem as Weapon)
UpdateCombatSkills()
endif
endif
EndEvent
The UpdateCombatSkills function modifies the combat skills according to the type of the equipped weapons (GetEquippedItemType):
Code: Select all
GlobalVariable Property CombatSpellGlobal Auto
GlobalVariable Property CombatStyleGlobal Auto
Spell Property SpellSignature Auto
Spell Property SpellFire Auto
Spell Property SpellFrost Auto
Spell Property SpellShock Auto
Function UpdateCombatSkills()
int CombatSpellInt = CombatSpellGlobal.getvalueint()
Samuel.removespell(SpellSignature)
Samuel.removespell(SpellFire)
Samuel.removespell(SpellFrost)
Samuel.removespell(SpellShock)
;=== setting the appropriate combat styles, spells and skills
if Samuel.GetEquippedItemType(0) == 0 && Samuel.GetEquippedItemType(1) == 0
;debug.notification("no weapon")
Samuel.forceav("destruction", Samuel.getbaseav("destruction"))
Samuel.forceav("destruction", Samuel.getbaseav("destruction") + 50)
Samuel.forceav("onehanded", Samuel.getbaseav("onehanded"))
Samuel.forceav("onehanded", Samuel.getbaseav("onehanded") - Samuel.getbaseav("onehanded") * 0.5)
Samuel.forceav("twohanded", Samuel.getbaseav("twohanded"))
Samuel.forceav("twohanded", Samuel.getbaseav("twohanded") - Samuel.getbaseav("twohanded") * 0.5)
Samuel.forceav("marksman", Samuel.getbaseav("marksman"))
Samuel.forceav("marksman", Samuel.getbaseav("marksman") - Samuel.getbaseav("marksman") * 0.5)
CombatStyleGlobal.setvalue(0)
; signature spell
if CombatSpellInt == 1
Samuel.AddSpell(SpellSignature)
; fire spell
elseif CombatSpellInt == 2
Samuel.AddSpell(SpellFire)
; frost spell
elseif CombatSpellInt == 3
Samuel.AddSpell(SpellFrost)
; shock spell
elseif CombatSpellInt == 4
Samuel.AddSpell(SpellShock)
endif
;--- one-handed swords, daggers, axes and maces
elseif (Samuel.GetEquippedItemType(1) > 0 && Samuel.GetEquippedItemType(1) < 5)
;debug.notification("one-handed")
Samuel.forceav("destruction", Samuel.getbaseav("destruction"))
Samuel.forceav("destruction", Samuel.getbaseav("destruction") + 25)
Samuel.forceav("onehanded", Samuel.getbaseav("onehanded"))
Samuel.forceav("onehanded", Samuel.getbaseav("onehanded") +50)
Samuel.forceav("twohanded", Samuel.getbaseav("twohanded"))
Samuel.forceav("twohanded", Samuel.getbaseav("twohanded") - Samuel.getbaseav("twohanded") * 0.5)
Samuel.forceav("marksman", Samuel.getbaseav("marksman"))
Samuel.forceav("marksman", Samuel.getbaseav("marksman") - Samuel.getbaseav("marksman") * 0.5)
CombatStyleGlobal.setvalue(1)
; signature spell
if CombatSpellInt == 1
Samuel.AddSpell(SpellSignature)
; fire spell
elseif CombatSpellInt == 2
Samuel.AddSpell(SpellFire)
; frost spell
elseif CombatSpellInt == 3
Samuel.AddSpell(SpellFrost)
; shock spell
elseif CombatSpellInt == 4
Samuel.AddSpell(SpellShock)
endif
;--- two-handed swords and axes/maces
elseif Samuel.GetEquippedItemType(1) > 4 && Samuel.GetEquippedItemType(1) < 7
;debug.notification("two-handed")
Samuel.forceav("twohanded", Samuel.getbaseav("twohanded"))
Samuel.forceav("twohanded", Samuel.getbaseav("twohanded") +50)
Samuel.forceav("marksman", Samuel.getbaseav("marksman"))
Samuel.forceav("marksman", Samuel.getbaseav("marksman") - Samuel.getbaseav("marksman") * 0.5)
Samuel.forceav("onehanded", Samuel.getbaseav("onehanded"))
Samuel.forceav("onehanded", Samuel.getbaseav("onehanded") - Samuel.getbaseav("onehanded") * 0.5)
CombatStyleGlobal.setvalue(2)
;--- bows
elseif Samuel.GetEquippedItemType(0) == 7
;debug.notification("bow")
Samuel.forceav("marksman", Samuel.getbaseav("marksman"))
Samuel.forceav("marksman", Samuel.getbaseav("marksman") +50)
Samuel.forceav("onehanded", Samuel.getbaseav("onehanded"))
Samuel.forceav("onehanded", Samuel.getbaseav("onehanded") - Samuel.getbaseav("onehanded") * 0.5)
Samuel.forceav("twohanded", Samuel.getbaseav("twohanded"))
Samuel.forceav("twohanded", Samuel.getbaseav("twohanded") - Samuel.getbaseav("twohanded") * 0.5)
CombatStyleGlobal.setvalue(3)
;--- staffs
elseif Samuel.GetEquippedItemType(1) == 8 || Samuel.GetEquippedItemType(0) == 8
;debug.notification("staffs")
Samuel.forceav("destruction", Samuel.getbaseav("destruction"))
Samuel.forceav("destruction", Samuel.getbaseav("destruction") + 25)
Samuel.forceav("onehanded", Samuel.getbaseav("onehanded"))
Samuel.forceav("onehanded", Samuel.getbaseav("onehanded") +50)
Samuel.forceav("twohanded", Samuel.getbaseav("twohanded"))
Samuel.forceav("twohanded", Samuel.getbaseav("twohanded") - Samuel.getbaseav("twohanded") * 0.5)
Samuel.forceav("marksman", Samuel.getbaseav("marksman"))
Samuel.forceav("marksman", Samuel.getbaseav("marksman") - Samuel.getbaseav("marksman") * 0.5)
CombatStyleGlobal.setvalue(1)
; signature spell
if CombatSpellInt == 1
Samuel.AddSpell(SpellSignature)
; fire spell
elseif CombatSpellInt == 2
Samuel.AddSpell(SpellFire)
; frost spell
elseif CombatSpellInt == 3
Samuel.AddSpell(SpellFrost)
; shock spell
elseif CombatSpellInt == 4
Samuel.AddSpell(SpellShock)
endif
;--- crossbows
elseif Samuel.GetEquippedItemType(1) == 12 || Samuel.GetEquippedItemType(0) == 12
;debug.notification("crossbows")
Samuel.forceav("marksman", Samuel.getbaseav("marksman"))
Samuel.forceav("marksman", Samuel.getbaseav("marksman") +50)
Samuel.forceav("onehanded", Samuel.getbaseav("onehanded"))
Samuel.forceav("onehanded", Samuel.getbaseav("onehanded") - Samuel.getbaseav("onehanded") * 0.5)
Samuel.forceav("twohanded", Samuel.getbaseav("twohanded"))
Samuel.forceav("twohanded", Samuel.getbaseav("twohanded") - Samuel.getbaseav("twohanded") * 0.5)
CombatStyleGlobal.setvalue(3)
endif
EndFunction
- Selene310187
- Site Admin
- Joined: Fri Oct 07, 2022 8:34 pm
- Contact:
Re: Samuel - Master of Dark Arts (WIP)
Preview of Samuel's Signature Spell
Newest additions:
These are the things that I want to integrate before I call the mod finished:
Previous additions:
Newest additions:
- healing options: "When summoned", "Uses spell", or "Off"
- alternative combat spells (fire, shock, frost) plus the option to turn the use of combat spells off
- ability to toggle off the combat style auto-assignation and the auto-equip weapon feature if you prefer AFT's combat style and equipment handling for example
These are the things that I want to integrate before I call the mod finished:
- change the combat style assignation part of the script to take shields into account and create a knight combat style (Edit: done)
- in-game manual (I put that off to another day)
- option to disable the dialogue menu (so that you only see the quick menu when you interact with Samuel and don't need to close the dialogue menu manually each time) (Edit: done)
- option to disable idle chatter (the occasional comments he gives you when he's following you around like "Still here" or "I'm right behind you") (Edit: done)
Previous additions:
- scripting the toggling of the modular parts of Samuel's outfit and the custom outfit part creating Samuel's dark destruction spell aka "Samuel's
Signature Spell' - creating Samuel's dark destruction spell aka "Samuel's Signature Spell"
- combat behavior settings
Last edited by Selene310187 on Wed Jan 18, 2023 11:30 pm, edited 5 times in total.
- Altbert
- Moderator
- Joined: Tue Nov 01, 2022 10:58 pm
- Location: Netherlands
- Contact:
Re: Samuel - Master of Dark Arts (WIP)
Looks good! But actually not really my cup of tea. As for magic I only use Healing (myself or others) and Magelight (if a dungeon is still to dark when using my Ring of Night Eye), such as Darkfall Cave.
- These users thanked the author Altbert for the post:
- Selene310187
Bis vincit, qui se vincit in victoria - He conquers twice who conquers himself in victory (Publius Syrus)
- Selene310187
- Site Admin
- Joined: Fri Oct 07, 2022 8:34 pm
- Contact:
Re: Samuel - Master of Dark Arts (WIP)
You can still disable his combat spells via his settings menu and turn him into, for example, a knight if you want. Just give him a sword and armor, and the script changes his combat skills accordingly... Oh, if this a one-handed sword, he will only turned into a spellsword. I forgot to check if a shield is equipped. So I will update the UpdateCombatSkills function and the OnItemAdded/OnItemRemoved parts of the script to take shields into account (see Papyrus code snippets at the end of this post). Then I need to create a matching combat style for the knight which is linked to the UpdateCombatSkills function (the linking is done by using a Global).
- Selene310187
- Site Admin
- Joined: Fri Oct 07, 2022 8:34 pm
- Contact:
Re: Samuel - Master of Dark Arts (WIP)
Now Samuel becomes a spellsword when only a one-handed sword is equipped. As soon as a shield is equipped, his combat style changes to knight automatically, provided that the shield has the default keyword "ArmorShield" assigned in the Creation Kit.
These combat styles will be assigned according to Samuel's equipped stuff:
As soon as I've implemented this tiny bit, I start a final test run testing all functions of the settings menu extensively. After this, I write the in-game manual.
These combat styles will be assigned according to Samuel's equipped stuff:
- Mage (no weapons; his default combat style)
- Spellsword (one-handed weapons including staffs)
- Knight (shield)
- Two-handed (two-handed swords, axes, maces)
- Missile (bows, crossbows)
As soon as I've implemented this tiny bit, I start a final test run testing all functions of the settings menu extensively. After this, I write the in-game manual.
- Selene310187
- Site Admin
- Joined: Fri Oct 07, 2022 8:34 pm
- Contact:
Re: Samuel - Master of Dark Arts (WIP)
Implementing this "tiny bit" took longer than expected. I soon noticed that there isn't a hand-to-hand skill like in the previous The Elder Scrolls games. So I improvised and found the "(invisible) daggers combined with unarmed animations" approach:
https://www.reddit.com/r/skyrimmods/com ... ed_combat/
I further tweaked this approach by assigning unarmed attack sounds to the invisible weapons and removing all sounds which are related to daggers. There's one dagger for the left and another one for the right hand. His "unarmed" combat style is set to "Allow Dual Wielding" which makes sure that he fights with both invisible daggers in his hands. I was quite surprised that it's possible to assign completely different animations to a weapon. Making the daggers invisible was easy. All I need to do was duplicating one of the existing dummy weapons in the Creation Kit.
The new "unarmed" combat style
https://www.reddit.com/r/skyrimmods/com ... ed_combat/
I further tweaked this approach by assigning unarmed attack sounds to the invisible weapons and removing all sounds which are related to daggers. There's one dagger for the left and another one for the right hand. His "unarmed" combat style is set to "Allow Dual Wielding" which makes sure that he fights with both invisible daggers in his hands. I was quite surprised that it's possible to assign completely different animations to a weapon. Making the daggers invisible was easy. All I need to do was duplicating one of the existing dummy weapons in the Creation Kit.
The new "unarmed" combat style
- Selene310187
- Site Admin
- Joined: Fri Oct 07, 2022 8:34 pm
- Contact:
Re: Samuel - Master of Dark Arts (WIP)
Today, I finished the in-game manual. Furthermore, I made the strength of the invisible unarmed weapons of his unarmed combat style tiered by the strength of the weapons that start to appear at certain levels of the player (i.e. orcish at level 6 and so on).
Preview of the in-game manual
Preview of Samuel's Quick Menu
The only things left to do is writing the readme and creating the German version of the mod including the translated readme (my mods for the Elder Scrolls games are mostly bilingual).
Preview of the in-game manual
Preview of Samuel's Quick Menu
The only things left to do is writing the readme and creating the German version of the mod including the translated readme (my mods for the Elder Scrolls games are mostly bilingual).
- Selene310187
- Site Admin
- Joined: Fri Oct 07, 2022 8:34 pm
- Contact:
Re: Samuel - Master of Dark Arts (WIP)
After a break of several months I finally took the time to finish and polish the readmes of the English and German versions. Depending on how much energy I have left after this work week, the release will probably be this weekend.
Edit:
Release thread
Edit:
Release thread
Last edited by Selene310187 on Sun May 14, 2023 1:57 pm, edited 1 time in total.
Reason: added link to the release thread
Reason: added link to the release thread