Jump to content

Modifying Combat Arts and understanding Flags - spells.txt


Recommended Posts

  • Replies 77
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

I think that you could do something like this by adding combat arts to the creatures that are summoned which buff speed/experience/whatever. But to do that you would need to modify some other files, c

Here is a Wiki reference for the spell tokens: http://www.sacredwiki.org/index.php/Sacred_2:Tokens   I'm not sure if it's complete or not. I also made a list of my own in alphabetical order that y

It can be edited since CM Patch 1.60(where, I've rewritten it). The four tokens per CA cap remains. You have to familiarize yourself with Ollydbg 1.0.10.0 debugger basics, the Assembler code ba

Chattius, thank you deeply. I could kiss you (well not really), this will make my life so much easier.

 

I have decided to try and do something of a long term project. I want to experiment with changing all the CAs around to see if it is possible to give them to different characters. It would be like another expansion if you could play your favourite character with new skills and CAs, ie;

An inquisitor who can use his own Astral Lord CAs, the Shadow Warrior's Nefarious Netherworld CAs and the Dryad's Cabalistic Voodoo CAs. Would that be a great necromancer to play?

 

I have other ideas for the other characters, which I won't go into just now.

Edited by podgie_bear
Link to post

I would love a copy Llama, do you need my email address?

 

I want to try my pet project out, but it may take a while as I am commited to writing quest guides for Ice & Blood at the moment, apart from trying to find time to play my own character's games. Plus there's stuff happening in the real world (sigh), that takes valuable Sacred time away too.

Link to post
  • 3 months later...

about what u said about experimenting to use CA of one character on another... I did... I changed all my seraphim CAs for CAs of other classes. the problem I m trying to solve now is about animation... it seems the "new" CAs use the animation of the original CA of the character. for example I switched soul hammer with dragon berserker, but when I use dragon berserker my seraphim has an animation as if she is trying to hit someone and then quickly transforms...

if anyone can help me on this please tell me...

 

oh... and there one more problem with this particular skill (dragon berserker)... when I change back into a seraphim all my skills at the character section are changed but I still get the bonuses from them (at least sometimes :P ). this goes back to normal if I go to the main menu and load my char again. if someones knows how to fix this I d appreciate it :)

Edited by Enferian
Link to post
  • 3 months later...

As there is no information about enemy spells (cd, duration, etc.) out there on sacredwiki or google, does anyone has access to information like that?

Always wondered ...

 

Well... It's not documented probably because there's no easy access to the information. It's not like you can play as the enemy and gain CAs like you would for your heros. Unfortunately, nor is Sacred 2 is like many Anime programs - where the hero or villian yells out the name of the attack as they're casting it.

 

I can tell you that some CAs cast by the enemies in Sacred 2 appear to have the same animation/graphical effects as those cast by the various 7 heros in Sacred 2. Stuff like the Temple Guardian's Combat Alert - that appears to have yellow "compass pointers" on the ground surrounding the enemy - it would indicate some have that ability as well. Some Olms in the Swamp region also can cast something akin to the Dryad's Tangled Vine.

 

But the information is there in a file called "Spells.txt" that can be found in the shared subfolder under your Sacred 2 installation in the Scripts directory. The problem is - it's kind of cryptic. Some of it's more obvious than others.

Link to post

Spell info on what enemies are using is one of the toughest secrets to crack, but there are some good published articles on it here at DarkMatters. Check out Chatius's work:

 

 

Modifying Combat Arts and understanding Flags - spells.txt

 

That's probably going to be the best answer on this subject you'll find.

Also moving this topic over to Chattius's thread so we can keep the info organized together.

 

Cheers

 

:)

 

gogo

Link to post
  • 3 weeks later...

Hey guys

 

I received a pm this morning from a member (llama) asking for info on where this topic had gone too, but he later found it in Sacred 2 General Discussion and asked about having this moved to Modding so it can be found easier.

 

We've now moved this post to Sacred 2 Modding and have also pinned this as well for future reference,excellent info here in this topic for future Sacred 2 Modders.

 

:)

 

gogo

Link to post

@Llama:

My main interest in spells.txt was to modify horse-combat arts because my daughters hoped for horse riding characters. I wasn't really looking into this stuff anymore after doing the modified horse-Combat Arts.

But with our 12 year old suffering from a bicycle accident and currently recovering from surgery - the reason for better horse-Combat Arts sadly got only a low priority. The last I did which was using spells.txt was to change levitation into a buff. But no flying, more a running with rockets attached to boots and sending out heat waves.

Link to post
  • 2 months later...

Hi Darkmatters Sacred Community,

 

I checked today the spells.txt and I found for the SW an interesting CA named TODESKAELTE in english I think its called Chilling Death ?

Here :

 

mgr.defineSpell( "sk_ap_todeskaelte", {

eiStateName = "cSpellCast",

fxTypeCast = "FX_SK_TODESKAELTE_C",

fxTypeSpell = "FX_SK_TODESKAELTE",

fxTypeCastSpecial = "",

duration = 10.000000,

animType = "ANIM_TYPE_SM16",

animTypeApproach = "ANIM_TYPE_INVALID",

animTypeRide = "ANIM_TYPE_INVALID",

animTypeSpecial = "ANIM_TYPE_INVALID",

causesSpellDamage = 1,

tokens = {

entry0 = {"et_duration_boost", 1000, 0, 0, 8 },

entry1 = {"et_slow_enemy_any", 200, 5, 0, 42 },

entry2 = {"et_range_near", 990, 10, 0, 4 },

entry3 = {"et_lower_armor", 500, 20, 1, 8 },

entry4 = {"et_minion_boost", 800, 0, 2, 8 },

entry5 = {"et_chance_reflect_root", 295, 5, 3, 41 },

entry6 = {"et_spelldamage_ice", 250, 250, 4, 133 },

entry7 = {"et_boost_to_buff", 1, 0, 5, 8 },

entry8 = {"et_friendfactor", 800, 0, 6, 8 },

},

fightDistance = 0.000000,

aspect = "EA_SK_ASTRALPLANE",

cooldown = 5.000000,

soundProfile = 0,

cost_level = 150,

cost_base = 300,

focus_skill_name = "SKILL_INVALID",

lore_skill_name = "SKILL_INVALID",

spellClass = "cSpellSkTodeskaelte",

spellcontroltype = "eCAtype_b_boost_self",

sorting_rank = 1,

})

 

mgr.defineSpell( "sk_ap_todeskaelte_buff", {

eiStateName = "",

fxTypeCast = "",

fxTypeSpell = "",

fxTypeCastSpecial = "",

duration = 0.000000,

animType = "ANIM_TYPE_SM16",

animTypeApproach = "ANIM_TYPE_INVALID",

animTypeRide = "ANIM_TYPE_INVALID",

animTypeSpecial = "ANIM_TYPE_INVALID",

causesSpellDamage = 1,

tokens = {

entry0 = {"et_slow_enemy_any", 500, 20, 0, 42 },

entry1 = {"et_range_near", 200, 5, 0, 4 },

entry2 = {"et_lower_armor", 500, 20, 1, 8 },

entry3 = {"et_minion_boost", 600, 0, 2, 8 },

entry4 = {"et_chance_reflect_root", 246, 4, 3, 41 },

entry5 = {"et_spelldamage_ice", 150, 150, 4, 133 },

entry6 = {"et_is_buff", 1, 0, 5, 8 },

entry7 = {"et_friendfactor", 600, 0, 6, 8 },

},

fightDistance = 0.000000,

aspect = "EA_SK_ASTRALPLANE",

cooldown = 0.000000,

soundProfile = 0,

cost_level = 150,

cost_base = 300,

focus_skill_name = "skill_SK_astral_plane_focus",

lore_skill_name = "skill_SK_astral_plane_lore",

spellClass = "",

spellcontroltype = "eCAtype_t_buff",

sorting_rank = 1,

 

The 1 in sorting rank comes from me because I wanted to change Spectralhand / Geisterhand with Todeskaelte / Chilling Death but the only thing that happen is that Spectralhand is gone but then I have Geisterform ( Buff ) / Shadow Veil ( Buff ) instead of Spectralhand / Geisterhand or Todeskaelte / Chilling Death in the CA Menu.

Is there any way to activate this CA ?

Because I think this is can be a awesome CA and Spectralhand is in my opinion pretty lame.

Sry for my bad english but I am a german.^^

Link to post

The spells that the classes can use are actually applied to the class in creatures.txt. If you open that and search for SC_Schattenkrieger it will take you to the correct entry and then you should simply need to replace the geisterhand entry with the Todeskaelte one.

Link to post

Hi Dragon Brother,

 

thanks for your answer and I made the changes in the creatures.txt but then I have only 4 CA in the Astral Plane Aspect.

Here I made a screen :

 

g5piiw9v.jpg

 

And here the creature.txt change :

 

mgr.createCreature {

id = 93,

itemtype_id = 3,

name = "SC_Schattenkrieger",

behaviour = "Invalid",

dangerclass = 7,

groupmaxcount = 1,

elite_creature_id = 93,

probabilityforelite = 0.000000,

rank = 999,

tenergy_creature_id = 93,

livesremaining = 0,

unconscioustime = 5,

palettebits = "1111111111111111",

monstertype = 0,

faction_id = 1,

equipset_id = 1,

modelscale = 1.000000,

rise_from_ground = 0,

has_corpse = 1,

has_soul = 1,

can_strafe = 0,

spells = {

entry0 = { "sk_hc_harterschlag" },

entry1 = { "sk_hc_befreiungsschlag" },

entry2 = { "sk_hc_rammstoss" },

entry3 = { "sk_hc_kampfruf" },

entry4 = { "sk_hc_willensstaerke" },

entry5 = { "sk_tc_attacke" },

entry6 = { "sk_tc_sprung" },

entry7 = { "sk_tc_standarte" },

entry8 = { "sk_tc_kampfrausch" },

entry9 = { "sk_tc_umlenkung" },

entry10 = { "sk_ap_todeskaelte" },

entry11 = { "sk_ap_unterstuetzung" },

entry12 = { "sk_ap_kampfbefehl" },

entry13 = { "sk_ap_geistform" },

entry14 = { "sk_ap_kohorte" },

entry15 = { "sk_ap_geistform_buff" },

},

 

And can runes for todeskaelte drop ? Because Spectralhand runes drops and I cant read them because the skill is gone in my AP Aspect.

 

And the Spell.txt is the same like I posted yesterday but I can post it again.

 

mgr.defineSpell( "sk_ap_todeskaelte", {

eiStateName = "cSpellCast",

fxTypeCast = "FX_SK_TODESKAELTE_C",

fxTypeSpell = "FX_SK_TODESKAELTE",

fxTypeCastSpecial = "",

duration = 10.000000,

animType = "ANIM_TYPE_SM16",

animTypeApproach = "ANIM_TYPE_INVALID",

animTypeRide = "ANIM_TYPE_INVALID",

animTypeSpecial = "ANIM_TYPE_INVALID",

causesSpellDamage = 1,

tokens = {

entry0 = {"et_duration_boost", 1000, 0, 0, 8 },

entry1 = {"et_slow_enemy_any", 200, 5, 0, 42 },

entry2 = {"et_range_near", 990, 10, 0, 4 },

entry3 = {"et_lower_armor", 500, 20, 1, 8 },

entry4 = {"et_minion_boost", 800, 0, 2, 8 },

entry5 = {"et_chance_reflect_root", 295, 5, 3, 41 },

entry6 = {"et_spelldamage_ice", 250, 250, 4, 133 },

entry7 = {"et_boost_to_buff", 1, 0, 5, 8 },

entry8 = {"et_friendfactor", 800, 0, 6, 8 },

},

fightDistance = 0.000000,

aspect = "EA_SK_ASTRALPLANE",

cooldown = 5.000000,

soundProfile = 0,

cost_level = 150,

cost_base = 300,

focus_skill_name = "SKILL_INVALID",

lore_skill_name = "SKILL_INVALID",

spellClass = "cSpellSkTodeskaelte",

spellcontroltype = "eCAtype_b_boost_self",

sorting_rank = 1,

})

 

mgr.defineSpell( "sk_ap_todeskaelte_buff", {

eiStateName = "",

fxTypeCast = "",

fxTypeSpell = "",

fxTypeCastSpecial = "",

duration = 0.000000,

animType = "ANIM_TYPE_SM16",

animTypeApproach = "ANIM_TYPE_INVALID",

animTypeRide = "ANIM_TYPE_INVALID",

animTypeSpecial = "ANIM_TYPE_INVALID",

causesSpellDamage = 1,

tokens = {

entry0 = {"et_slow_enemy_any", 500, 20, 0, 42 },

entry1 = {"et_range_near", 200, 5, 0, 4 },

entry2 = {"et_lower_armor", 500, 20, 1, 8 },

entry3 = {"et_minion_boost", 600, 0, 2, 8 },

entry4 = {"et_chance_reflect_root", 246, 4, 3, 41 },

entry5 = {"et_spelldamage_ice", 150, 150, 4, 133 },

entry6 = {"et_is_buff", 1, 0, 5, 8 },

entry7 = {"et_friendfactor", 600, 0, 6, 8 },

},

fightDistance = 0.000000,

aspect = "EA_SK_ASTRALPLANE",

cooldown = 0.000000,

soundProfile = 0,

cost_level = 150,

cost_base = 300,

focus_skill_name = "skill_SK_astral_plane_focus",

lore_skill_name = "skill_SK_astral_plane_lore",

spellClass = "",

spellcontroltype = "eCAtype_t_buff",

sorting_rank = 1,

})

 

mgr.defineSpell( "xxxsk_ap_geisterhand", {

eiStateName = "cSpellCast",

fxTypeCast = "FX_SK_GEISTERHAND_C",

fxTypeSpell = "FX_SK_GEISTERHAND",

fxTypeCastSpecial = "FX_SK_GEISTERHAND_C",

duration = 10.000000,

animType = "ANIM_TYPE_ATTACKA",

animTypeApproach = "ANIM_TYPE_INVALID",

animTypeRide = "ANIM_TYPE_INVALID",

animTypeSpecial = "ANIM_TYPE_RIDEATTACKA-SPECIAL",

causesSpellDamage = 0,

tokens = {

entry0 = {"et_mult_weapondamage", 1150, 2, 0, 9 },

entry1 = {"et_baseAW", 200, 350, 0, 5 },

entry2 = {"et_damage_any_rel", 200, 140, 0, 5 },

entry3 = {"et_ThisSpeed", 200, 0, 1, 4 },

entry4 = {"et_damage_any_rel", 100, 70, 2, 5 },

entry5 = {"et_weapondamage_ice", 40, 10, 3, 9 },

entry6 = {"et_chance_criticalhit", 198, 2, 4, 5 },

entry7 = {"et_chance_doublehit", 250, 0, 5, 5 },

entry8 = {"et_mult_weapondamage", 200, 1, 6, 9 },

},

fightDistance = 525.000000,

aspect = "EA_SK_ASTRALPLANE",

cooldown = 0.000000,

soundProfile = 0,

cost_level = 225,

cost_base = 450,

focus_skill_name = "skill_SK_astral_plane_focus",

lore_skill_name = "skill_SK_astral_plane_lore",

spellClass = "cSpellSkGeisterhand",

spellcontroltype = "eCAtype_a_effect_attack",

spelllogictype = "ca_ct_indirect_attack",

sorting_rank = 0,

 

Thanks in advance

Edited by Shadowflare85
Link to post

Ahh...I hadn't thought about that issue. Firstly, the game has no text for the CA and therefore you get the blank box you see. Also, runes won't drop for it, but it may be possible to change the geisterhand runes to effect this ca...I'm not too sure how to do this though, some stuff has been mentioned a couple of times on the forums in threads about swapping Combat Arts between classes. You might have some luck looking through those threads to see if they are any use, but you will be unable too get the ca to work without a rune to read into the ca to first learn it. What I would instead suggest is that you restore all you files to default and then simply copy the todeskaelte details from spells.txt and paste it over the geisterhand details (backing up of course). The ca name/icon/ingame info will remain as it was for geisterhand (mostly) but you will get the effect of the spell you want and still have working runes and everything. You'll just have to ensure the sorting_rank is the right number.

Link to post

Ah ok I changed the spells.txt like this :

 

mgr.defineSpell( "sk_ap_geisterhand", {

eiStateName = "cSpellCast",

fxTypeCast = "FX_SK_TODESKAELTE_C",

fxTypeSpell = "FX_SK_TODESKAELTE",

fxTypeCastSpecial = "",

duration = 10.000000,

animType = "ANIM_TYPE_SM16",

animTypeApproach = "ANIM_TYPE_INVALID",

animTypeRide = "ANIM_TYPE_INVALID",

animTypeSpecial = "ANIM_TYPE_INVALID",

causesSpellDamage = 1,

tokens = {

entry0 = {"et_duration_boost", 1000, 0, 0, 8 },

entry1 = {"et_slow_enemy_any", 200, 5, 0, 42 },

entry2 = {"et_range_near", 990, 10, 0, 4 },

entry3 = {"et_lower_armor", 500, 20, 1, 8 },

entry4 = {"et_minion_boost", 800, 0, 2, 8 },

entry5 = {"et_chance_reflect_root", 295, 5, 3, 41 },

entry6 = {"et_spelldamage_ice", 250, 250, 4, 133 },

entry7 = {"et_boost_to_buff", 1, 0, 5, 8 },

entry8 = {"et_friendfactor", 800, 0, 6, 8 },

},

fightDistance = 0.000000,

aspect = "EA_SK_ASTRALPLANE",

cooldown = 5.000000,

soundProfile = 0,

cost_level = 150,

cost_base = 300,

focus_skill_name = "SKILL_INVALID",

lore_skill_name = "SKILL_INVALID",

spellClass = "cSpellSkTodeskaelte",

spellcontroltype = "eCAtype_b_boost_self",

sorting_rank = 1,

 

But if I use the Spectralhand than my SW dont move and makes nothing and cannot walk either and I must end my game......did I miss something ?

Link to post

To be honest I'm not sure why it isn't working. If it was never implemented it may be that the spellclass does not exist (potentially even the fx's as well), which is enough to bug out the game like you have described. You could try changing focus/lore_skill_name to the astral value and see if that helps, but otherwise I don't know if theres anything else you can do...perhaps swap out the spellclass with one from a similar CA? Perhaps the one from crystalskin?

Link to post
  • 2 years later...

More of the same martial arts that can be in one combo
As the name implies topic, there is a mod that would prove submitted by more of the same martial arts that can be in one combo?

Example: 4x pelting strikes in one combo?.

Simply, the same thing what is in sacred 1

Is it possible to do?

Link to post

More of the same martial arts that can be in one combo

As the name implies topic, there is a mod that would prove submitted by more of the same martial arts that can be in one combo?

 

Example: 4x pelting strikes in one combo?.

 

Simply, the same thing what is in sacred 1

 

Is it possible to do?

I do not think that this is possible, it is probably something hard coded and not something you could edit.

  • Like! 1
Link to post
  • 1 year later...

Based off of browsing 2 pages of this thread, I think the third variable sent to spell subroutines is a check for skill modifications. I'm guessing the number matches up with the order that the game files the 8 choices in. I don't think I expressed this all that clearly. I'd like to look into this. It would be amusing to make a mod where you play as a boss or something.

Link to post

I think the third variable sent to spell subroutines is a check for skill modifications.

That is correct.

 

I'd like to look into this. It would be amusing to make a mod where you play as a boss or something.

Should be possible. Like a boss mod where each character is one of 7 bosses and their spells are the boss spells. You'd probably have a problem with equipment though, so it would probably just be a novelty thing, not a serious mod. If I wasn't already neck-deep in a big modding project I'd experiment with it. If you want tips I could give a few pointers.

Link to post

Oh yeah. If you know which files I should look at, especially with regard to which combat arts and animations etc are assigned to the classes. Also, any recommendations on what program works well to edit scripts in. Not microsoft.net framework, like modding Oblivion? Just a text editor with no parser or error checker?

  • Like! 1
Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...