Skip to content

Sword Dancer Kit for Fighters, Paladins, and Monks

semiticgoddesssemiticgoddess Member Posts: 14,903
edited December 2019 in General Modding
I've always loved having high APR in the Infinity Engine games, and I've long wanted to somehow exceed the hardcoded cap of 10 attacks per round. Thanks to the invaluable support of @kjeron, we now have a kit for fighters, paladins, and monks that can strike twice with every attack roll, reaching up to 30 attacks per round!

The Sword Dancer specializes in repeatedly poking his or her opponents with an absurd number of embarrassingly weak attacks--basically, the polar opposite of the War Hulk kit. The Sword Dancer works great with weapons that have on-hit effects like the Dagger of Venom and Celestial Fury, but it will never outshine other fighters in terms of sheer damage output. Likewise, the Dancer kits for monks are much more effective at Stunning Blow, but will not have the same damage output as other monks.

The Sword Dancer kit actually makes three different attack rolls for every attack. Thus, a Sword Dancer's APR is triple what is shown on the Record screen, and this tripling stacks with Haste and Improved Haste. In addition, Sword Dancer fighters and paladins automatically get free dual-wielding with no penalties.

As with all of my kits, the crazy advantages come with equally crazy disadvantages. Each kit deals one-fifth physical damage with every strike, suffering a -80% penalty to all weapon damage, and the fighter kit cannot wear metal armor or place many proficiency points in heavier weapons (paladin proficiencies are even more restricted). The damage penalty does not apply to nonphysical damage, but it does reduce other bonuses to weapon damage such as Strength and proficiency bonuses.

There are five different kits: the Sword Dancer kit for fighters, and the Stone Dancer, Water Dancer, Flare Dancer, and Sky Dancer kits for monks.

Kit Descriptions:

Sword Dancer (fighter kit)
Part magician and part artist, a Sword Dancer is a warrior who uses telekinetic powers to influence their movements in combat. A Sword Dancer's powers come less from muscle and more from magic, allowing them to strike more often at the expense of reducing the force of each blow. Sword Dancers rely on the speed of their weapons to disrupt and disable their opponents, and prefer to use lighter and quicker weapons, which are easier to move using telekinesis.

CLASS FEATURES:

Advantages:

- Makes two additional attack rolls with each attack (stacks with Haste and similar effects)
- May wield two weapons at once with no penalties

Disadvantages:

- All physical damage is reduced to 1/5 of its normal value (all weapons deal 80% less damage per hit)
- Can only attain Mastery (three points) in short swords, katanas, scimitars, daggers, and staffs
- Can only attain Specialization (two points) in longswords, clubs, spears, and darts
- Can only attain Proficiency (one point) in axes, bastard swords, two-handed swords, war hammers, halberds, flails, maces, and shortbows
- May not place any proficiency points in crossbows, longbows, or slings
- Cannot wear armor heavier than studded leather

- Hit Die: d8

Sword Dancer (paladin kit)
Part magician and part artist, a Sword Dancer is a warrior who uses telekinetic powers to influence their movements in combat. A Sword Dancer's powers come less from muscle and more from magic, allowing them to strike more often at the expense of reducing the force of each blow. Sword Dancers rely on the speed of their weapons to disrupt and disable their opponents, and prefer to use lighter and quicker weapons, which are easier to move using telekinesis.

CLASS FEATURES:

Advantages:

- Makes two additional attack rolls with each attack (stacks with Haste and similar effects)
- May wield two weapons at once with no penalties

Disadvantages:

- All physical damage is reduced to 1/5 of its normal value (all weapons deal 80% less damage per hit)
- Can only attain Specialization (two points) in short swords, katanas, scimitars, daggers, and staffs
- Can only attain Proficiency (one point) in clubs, darts, spears, longswords, axes, war hammers, maces, and shortbows
- May not place any proficiency points in two-handed swords, bastard swords, halberds, flails, crossbows, longbows, or slings
- Cannot wear armor heavier than studded leather

- Hit Die: d8

Stone Dancer
Part magician and part artist, a Stone Dancer is a monk who uses telekinetic powers to influence their movements in combat. A Stone Dancer's powers come less from muscle and more from magic, allowing them to strike more often at the expense of reducing the force of each blow. Stone Dancers rely on the speed of their fists to disrupt and disable their opponents.

CLASS FEATURES:

Advantages:

- Makes two additional attack rolls with each attack.
- Gains an extra use of Stunning Blow every 3 levels after level 1 instead of 4.
- May cast Stoneskin at level 1.

Disadvantages:

- All physical damage is reduced to 1/5 of its normal value (all weapons deal 80% less damage per hit).

- Hit Die: d8


Water Dancer
Part magician and part artist, a Water Dancer is a monk who uses telekinetic powers to influence their movements in combat. A Water Dancer's powers come less from muscle and more from magic, allowing them to strike more often at the expense of reducing the force of each blow. Water Dancers rely on the speed of their fists to disrupt and disable their opponents.

CLASS FEATURES:

Advantages:

- Makes two additional attack rolls with each attack.
- Gains an extra half attack per round at level 1.
- Gains an extra use of Stunning Blow every 3 levels after level 1 instead of 4.

Disadvantages:

- All physical damage is reduced to 1/5 of its normal value (all weapons deal 80% less damage per hit).

- Hit Die: d8


Flare Dancer
Part magician and part artist, a Flare Dancer is a monk who uses telekinetic powers to influence their movements in combat. A Flare Dancer's powers come less from muscle and more from magic, allowing them to strike more often at the expense of reducing the force of each blow. Flare Dancers rely on the speed of their fists to disrupt and disable their opponents.

CLASS FEATURES:

Advantages:

- Makes two additional attack rolls with each attack.
- Deals an extra 1 fire damage with every unarmed strike.
- Gains an extra use of Stunning Blow every 3 levels after level 1 instead of 4.

Disadvantages:

- All physical damage is reduced to 1/5 of its normal value (all weapons deal 80% less damage per hit).

- Hit Die: d8


Sky Dancer
Part magician and part artist, a Sky Dancer is a monk who uses telekinetic powers to influence their movements in combat. A Sky Dancer's powers come less from muscle and more from magic, allowing them to strike more often at the expense of reducing the force of each blow. Sky Dancers rely on the speed of their fists to disrupt and disable their opponents.

CLASS FEATURES:

Advantages:

- Makes two additional attack rolls with each attack.
- Gains an extra use of Stunning Blow every 3 levels after level 1 instead of 4.
- May cast Windwalk twice per day.

WINDWALK: The Sky Dancer calls upon the force of the wind to transport them to another location, instantly teleporting them to any spot within range.

Disadvantages:

- All physical damage is reduced to 1/5 of its normal value (all weapons deal 80% less damage per hit).

- Hit Die: d8


A note for modders: This kit bypasses the normal cap for attacks per round by switching the character's sprite to a custom animation. This can be replicated for other classes and could even be incorporated into spells and items, given enough time and effort. Any modders that want to break the APR cap are free to use the files in this kit to replicate the effect provided they give credit to @kjeron, who discovered how to break the cap and made this kit possible. The discussion below contains some information on how to do this. Note that this method requires using a limited set of names for the custom animations, and this kit currently uses the values 6512 to 6525, covering only fighter and monk animations (no other classes are represented).



The old version of this kit, which enjoyed standard APR bonuses, had constant effect Improved Haste, and dealt lingering damage with light weapons, is also available. The old version's kit description is below:
Part magician and part artist, a Sword Dancer is a warrior who uses telekinetic powers to influence their movements in combat. A Sword Dancer's powers come less from muscle and more from magic, allowing them to strike more often at the expense of reducing the force of each blow. Sword Dancers rely on the speed of their weapons to disrupt and disable their opponents, and prefer to use lighter and quicker weapons, which are easier to move using telekinesis.

CLASS FEATURES:

Advantages:

- Improved Haste
- +1/2 attack per round every 5 levels
- Immune to slow
- May cast Blade Barrier once per day at level 10
- Deals 1 extra lingering damage per hit when using short swords, katanas, scimitars, daggers, staffs, darts, short bows, and longswords, with an additional 1 damage at levels 4, 8, and 12

Disadvantages:

- Deals 75% less damage with all weapons
- Can only attain Mastery (three points) in short swords, katanas, scimitars, daggers, staffs, darts
- Can only attain Specialization (two points) in longswords, clubs, spears, and shortbows
- Can only attain Proficiency (one point) in axes, bastard swords, two-handed swords, war hammers, halberds, flails, maces, crossbows, and longbows
- Cannot wear armor

High-Level Abilities:
- Twin Fencer
- Counterattack
- Whirlwind Attack
- Globe of Blades
- Flying Daggers

- Hit Die: d8
Post edited by semiticgoddess on
DreadKhanGusindaFlashburnStummvonBordwehr

Comments

  • _Luke__Luke_ Member, Mobile Tester Posts: 1,535
    Technical question: how did you code 'Counterattack'?
  • semiticgoddesssemiticgoddess Member Posts: 14,903
    @Luke93: I just copied the effects of the backlash from Fire Shield. You use a "Cast Spell on Condition" opcode and assign a custom spell as the resource. It's essentially just a crushing damage Fire Shield and a half-power Hardiness spell.
    DreadKhan
  • DreadKhanDreadKhan Member Posts: 3,857
    That sounds really different... how does it interact with spell casting based builds do you think? I suppose buffing spells would be pretty strong, or does the damage penalty get calced after everything, which really makes more sense I guess. Does the damage penalty affect elemental or bonus damage on weapons, IE would the FotA (if you edited to not interfere with haste?) deal big elemental with each hit?
  • semiticgoddesssemiticgoddess Member Posts: 14,903
    edited December 2019
    @DreadKhan: Elemental damage is not affected. The kit does 66% less slashing, crushing, piercing, and missile damage regardless of its source. It's calculated after all other bonuses, so having 24 Strength from a Potion of Storm Giant Strength would grant +4 to damage instead of +12. The same applies to spells: a Sword Dancer->Mage dual-class will deal 1/3 damage when casting Lance of Disruption, for example. The Flail of Ages will deal the same amount of elemental damage, and the Dagger of Venom will deal the same amount of poison damage.

    The kit's synergy with other classes varies. For dual-classing to a thief, backstabs will get crippled and regular traps will deal less damage, though Spike Traps deal magic damage in the unmodded game and will be at full strength. Sword Dancer/Clerics won't benefit much from DUHM and will suffer from the lack of metal armor.
    Post edited by semiticgoddess on
  • semiticgoddesssemiticgoddess Member Posts: 14,903
    edited December 2019
    Also, I uploaded a fix for the old version. Darts and shortbows should now deal lingering damage properly.
    Post edited by semiticgoddess on
  • _Luke__Luke_ Member, Mobile Tester Posts: 1,535
    semiticgod wrote: »
    @Luke93: I just copied the effects of the backlash from Fire Shield. You use a "Cast Spell on Condition" opcode and assign a custom spell as the resource. It's essentially just a crushing damage Fire Shield and a half-power Hardiness spell.

    I see, so the enemy needs to hit you.... I don't think it's accurate (since I guess you're supposed to block the attack and then counterattack....)

    But alas, there's probably no way to replicate 'Parry' from NWN, right?
  • DreadKhanDreadKhan Member Posts: 3,857
    I always liked the Karmic Strike concept from 3.x... a very flavourful feat setup can be done with it, and it requires them to actually hit you, but there were ways to encourage them to hit you, allowing you possibly 2 counter attacks at full BAB. A nice trade off if you're tough, I'd say!
  • kjeronkjeron Member Posts: 2,367
    semiticgod wrote: »
    @kjeron: Awesome! Would it be possible to loosen up those RBF files to allow some rare cases of APR above 10, without messing with regular attack animations? If we could put together a simple mod to open up 15 or 20 APR, we could allow other mods to copy over that mod's files to enable the higher APR values. It would definitely be very nice if I could incorporate it into my Sword Dancer kit mod, which currently uses on-hit effects to replicate the appearance of extra hits.
    I think I've a feasible way to implement this without completely breaking things. First off, you would need to duplicate all (48) INI files used by PC animations into new slots, and permanently assign this animation to the character through the CLAB, filtered for race and gender. (This just a sample, you should dynamically obtain slots not currently in use in the 6000-6FFF range.):
    • 6##0 -> 6##A
    • 6##1 -> 6##B
    • 6##2 -> 6##C
    • 6##3 -> 6##D
    • 6##4 -> 6##E
    • 6##5 -> 6##F
    • #: 0-3 (cleric/fighter/mage/thief)
    • #: 0-1 (male/female)
    Expand the [general] section for each of these new INI files as such:
    combat_round_0=RNDBASE1
    combat_round_1=RNDBASE2
    combat_round_2=RNDBASE3
    combat_round_3=RNDBASE4
    combat_round_4=RNDBASE5
    
    Replace "RNDBASE#" with your own custom filename, and create duplicates of each RNDBASE#.BMP file with your custom filenames. In each file, replace each instance of this sequence:
    CLLLLLRGGGGG (Color - 5xLight Gray - Red - 5xGray) with this:
    CLLLLLRGCLRG (Color - 5xLight Gray - Red - Gray - Color - Light Gray - Red - Gray) for 2x, or this:
    CLLLLLRCRCRG (Color - 5xLight Gray - Red - Color - Red - Color - Red - Gray) for 3x.
    You will need to use the specific colors present in each file to maintain offhand attacks and 1/2 attacks properly.
    Ignore sequences starting with "teal" - those are cosmetic attacks.
    
    The character will now make two (or three) attacks (each with their own attack roll) within each weapon swing animation, and can still be further modified by haste/slow. It doesn't really matter how many Light/Dark Gray pixels you have, you just need consecutive instances of Color->Red. Keeping each sequence 14 pixels long will keep all hits within the swing animation, but you could also go wild adding so many that they are always swinging their weapons - there's room for up to 50 attacks at 5 APR (100 with Imp. Haste) if you stripe the whole file Color/Red/Color/Red/....
    If the character is polymorphed they will lose these extra attacks (probably for the better).
    semiticgoddess
  • semiticgoddesssemiticgoddess Member Posts: 14,903
    @kjeron: Interesting! I'm not quite sure I understand how exactly to tweak those BMP files. I tried following your directions for 2x and then just replacing the standard RNDBASEX files to see if I had them right, and the result is that characters can't make attack rolls. Attached are the modified files--what do I have wrong here?
  • kjeronkjeron Member Posts: 2,367
    edited November 2019
    Looks like the program you used to edit them broke their formatting. Unless you saved it using a different file type and renamed it .BMP, I don't really know enough about image formats to know why it would be different, but the difference is obvious: the original file is 690 bytes and the size shouldn't change, yours are 3.36 kilobytes.
    I use windows Paint to edit them.

    edit: I think found reason - when saving, save as "16 color Bitmap", default is usually much higher for new files.
    semiticgoddess
  • semiticgoddesssemiticgoddess Member Posts: 14,903
    @kjeron: I got it right by saving it as an 8 bit file. I have the INI files and I can assign "animation change" opcodes to a CLAB file, but how would I set those opcodes to the right animation? Do I need some WeiDU code to patch an IDS file or something so I could just select the right animation for the opcode in Near Infinity?
  • kjeronkjeron Member Posts: 2,367
    edited November 2019
    Opcode 177 -> EFF (op177) -> EFF (op53)
    Race -> Gender -> Animation
    You can look at "LCARMORC.SPL" as an example in BGSOD.
    semiticgoddess
  • semiticgoddesssemiticgoddess Member Posts: 14,903
    @kjeron: That gives me some convenient base files to work with, but the real problem is that I don't know what animation I'm setting anything to when I'm using opcode 53. I have the INI files set up using the prefix 6U (so 6U00.INI is for male human clerics), but that's not what shows up when I'm trying to set the animation.
    p398zc1ds45f.png
  • kjeronkjeron Member Posts: 2,367
    edited November 2019
    Sorry, it's not a prefix - 6000.INI is a hex value, so all characters have to be 0 - F.
    The first has to be 6, the second cannot be 4, the third should be 0 (male) or 1(female), and the final char can be 0-F.
    The value used in op53 will be that filenames hex value or integer value: 6000 -> 0x6000 -> 24576.
    You can also add entries to ANIMATE.IDS, so they will show up in NI's dropdown menu, as:
    0x6A00	CLERIC_MALE_HUMAN_SWORD_DANCER
    
    Modified an old function to automate finding valid slots:
    	DEFINE_ACTION_FUNCTION	GET_ANIMATE_SLOT	INT_VAR	min = 0 max = 0xffff	gender = ~-1~	STR_VAR	label = ~~	RET	ids string	BEGIN
    		OUTER_SET	ids = ~-1~
    		OUTER_SPRINT	string ~~
    		ACTION_IF	~%label%~ STRING_EQUAL ~~	OR !(~%label%~ STRING_CONTAINS_REGEXP ~ ~)	BEGIN
    			FAIL	~Invalid ANIMATE label (%label%)~
    		END
    		ACTION_IF	FILE_CONTAINS_EVALUATED (~ANIMATE.IDS~ ~[%WNL%^]\(0x[0-9A-Z]+\|[0-9]+\)[ %TAB%]+%label%[ %TAB%%WNL%$]~)	BEGIN
    			OUTER_SET	ids = IDS_OF_SYMBOL (~ANIMATE~ ~%label%~)
    			OUTER_SET	min = ids	OUTER_SET	max = ids + 1
    		END
    		OUTER_FOR	(i = min; i < max + 1; ++i)	BEGIN
    			ACTION_MATCH	i WITH	2 3 4 1312 2320 2576 2592 2608 2624 2640 2817 2819 2820 2656 3088	BEGIN	END	DEFAULT
    				OUTER_SPRINT	hex ~~
    				OUTER_SET	d = i
    				OUTER_FOR (j = 0; j < 4; ++j)	BEGIN
    					OUTER_SET	r = d MODULO 16
    					OUTER_SET	d = d / 16
    					OUTER_PATCH_SAVE	h ~ ~	BEGIN	WRITE_BYTE	0 (r < 10 ? 0x30 + r : 0x37 + r)	END
    					OUTER_SPRINT hex	~%h%%hex%~
    				END
    				ACTION_IF	(gender < 0) OR (gender = 0 AND !(~%hex%~ STRING_MATCHES_REGEXP ~..0.~)) OR (gender = 1 AND !(~%hex%~ STRING_MATCHES_REGEXP ~..1.~)) BEGIN
    					ACTION_IF	ids < 0	BEGIN
    						ACTION_IF	(FILE_EXISTS_IN_GAME ~%hex%.INI~) OR (FILE_CONTAINS_EVALUATED (~ANIMATE.IDS~ ~[%WNL%^]\(0x%hex%\|%i%\)[ %TAB%]+.+~))	BEGIN
    						END	ELSE	BEGIN
    							APPEND	~ANIMATE.IDS~	~0x%hex% %label%~
    							OUTER_SPRINT	string ~%hex%~
    							OUTER_SET	ids = i
    							OUTER_SET	i = max
    						END
    					END	ELSE	BEGIN
    						OUTER_SPRINT	string ~%hex%~
    					END
    				END
    			END
    		END
    		ACTION_IF	ids = ~-1~	BEGIN
    			WARN	~No available slots between %min% and %max%~
    		END
    	END
    
    OUTER_SPRINT	rbflines	~[general]
    combat_round_0=(newfilename1)
    combat_round_1=(newfilename2)
    combat_round_2=(newfilename3)
    combat_round_3=(newfilename4)
    combat_round_4=(newfilename5)~
    	LAF	GET_ANIMATE_SLOT	INT_VAR	min = 0x6600	max = 0x6FFF	gender = 0	STR_VAR	label = ~CLERIC_MALE_HUMAN_SWORD_DANCER~	RET	C_M_H_SWORD_DANCER = ids	C_M_H_SWORD_DANCER_hex = string	END
    	COPY_EXISTING	~6000.INI~ ~override/%C_M_H_SWORD_DANCER_hex%.INI~
    		REPLACE_TEXTUALLY EXACT_MATCH	~[general]~	~%rbflines%~
    	COPY_EXISTING	~MC_HUMA2.EFF~ ~override/(newfilename).EFF~
    		WRITE_LONG	0x1c	C_M_H_SWORD_DANCER
    	//	repeat for each animation
    
    Post edited by kjeron on
    semiticgoddess
  • semiticgoddesssemiticgoddess Member Posts: 14,903
    @kjeron: More progress, but I've hit another wall. I've successfully changed the character's sprite and got it to make the "2 attacks per round per attack animation" thing work, but now the character's sprite is just Sarevok. When I try to re-set the sprite by casting the spell again (the spell in the CLAB is a GA_ as well as an AP_), the sprite goes invisible for a second before reverting to Sarevok. It looks like the game doesn't know which BAM to apply.

    Below is the full text of the INI for male human fighters. (This file is 6712.ini, and in the first parameter for the opcode 53 effect, the field is "Unknown - 26386." It shows up accurately as "6712h" as a hex number.) The "combat_round) section is there and is working properly with the BMP files in place. Is there an entry I could put somewhere to make sure the sprite is referencing the right BAM files? The paper doll is also a blank.
    // CHMF fighter_male_human

    [general]
    animation_type=6000
    move_scale=9
    ellipse=16
    color_blood=47
    color_chunks=0
    sound_freq=5
    personal_space=3
    cast_frame=4
    combat_round_0=USDBASE1
    combat_round_1=USDBASE2
    combat_round_2=USDBASE3
    combat_round_3=USDBASE4
    combat_round_4=USDBASE5

    [character]
    armor_max_code=4
    can_lie_down=1
    detected_by_infravision=1
    double_blit=0
    equip_helmet=1
    split_bams=1
    false_color=1
    height_code=WQL
    height_code_helmet=WQL
    height_code_shield=
    resref=CHMB
    resref_paperdoll=CHMF
    resref_armor_base=B
    resref_armor_specific=F

    [sounds]
    attack=
    attack_frame=0
    awake=
    awake_frame=0
    cast=
    cast_frame=0
    conjure=
    conjure_frame=0
    damage=
    damage_frame=0
    die=
    die_frame=0
    head_turn=
    head_turn_frame=0
    ready=
    ready_frame=0
    shoot=
    shoot_frame=0
    twitch=
    twitch_frame=0
    walk=
    walk_frame=0
    attack_slash=
    attack_slash_frame=0
    attack_backslash=
    attack_backslash_frame=0
    attack_jab=
    attack_jab_frame=0
    emerge=
    emerge_frame=0
    hide=
    hide_frame=0
    sleep=
    sleep_frame=0
    battle_cry=
    battle_cry_frame=0
    selection=
    selection_frame=0
    fall=fal_02b
    fall_frame=0
  • kjeronkjeron Member Posts: 2,367
    You did nothing wrong, I had the wrong slot range in mind, sorry. 6400 -64FF and 6600 - 6FFF are the old BG1 sprite slots.
    The BG2/EE sprites have to occupy slots: 5000-53FF, 5500-55FF, 6000-63FF, or 6500-65FF
    An easy way to do this would be using slots 5### in place of 6###.

    These entries reference the BAM files, which are correct:
    resref=CHMB
    resref_paperdoll=CHMF
    resref_armor_base=B
    resref_armor_specific=F
    
    semiticgoddess
  • semiticgoddesssemiticgoddess Member Posts: 14,903
    Done! Major thanks to @kjeron for breaking the APR cap!

    I've revised the kit a great deal. Instead of gaining flat APR bonuses, the kit simply makes two attack rolls per attack, doubling APR without needing Improved Haste. That means we properly double on-hit effects like those of Celestial Fury and Arrows of Detonation! I've also rebalanced the damage output, reducing the physical damage penalty from 75% to 66%, switched back to regular fighter HLAs, and gave the kit Offensive Spin and the ability to wear leather armor so it wouldn't be too weak in BG1, where on-hit effects from melee weapons are weak and scarce.

    The kit is now balanced more for a melee role, rather than just being an archer with extra hitstun and a stronger movement rate.
  • kjeronkjeron Member Posts: 2,367
    edited December 2019
    @semiticgod
    An FYI regarding using custom animations:
    If applied with timing mode 9: items such as the Girdle of Masculinity/Femininity may not fully work (they will change gender but not animation). Some polymorphs might not change the animation either (but all other changes should take place), depending on how they are implemented (which sadly is not uniform across the games).

    If applied with timing mode 1: There is a resurrection spell (BDRESURR.SPL) used by SoD scripts that will reset the creature's animation to CHARGEN defaults (the spell can be applied even if they are alive). The spell is normally never applied to CHARNAME, but is applied to NPC's, as well as Player2-6. At best, kicking->rejoining the party should fix them should this occur, as it reapplies a creature's kit.
    semiticgoddess
  • semiticgoddesssemiticgoddess Member Posts: 14,903
    I fixed a bug and further rebalanced the kit. Now the kit has triple attacks per round, but deals 80% less damage, no longer gets Offensive Spin, and can place fewer proficiency points in ranged weapons. This better rewards melee combat instead of kiting.
  • semiticgoddesssemiticgoddess Member Posts: 14,903
    @kjeron: I've tried making this into a monk kit and I've run into a problem: the duplicate monk sprites don't use monk fists with the right animation. When using any other weapon, things look normal, but when a Sword Dancer Monk with the duplicate sprite attacks using its unarmed attack, it looks like it's swinging an invisible two-handed weapon; it doesn't make the kick animation or the regular punch animation.

    I can remove the "fake two-handed" flag from the monk fist item(s), but that just results in a regular one-armed animation with an invisible weapon. Any idea how to get a custom monk sprite duplicate use monk fists with the right animation?
  • kjeronkjeron Member Posts: 2,367
    Check these entries in the INI file (they should have these values):
    male:
    resref=CHMM
    resref_paperdoll=CHMM
    
    female:
    resref=CHFM
    resref_paperdoll=CHFM
    
    both:
    resref_armor_base=M
    resref_armor_specific=M
    
    semiticgoddess
  • semiticgoddesssemiticgoddess Member Posts: 14,903
    @kjeron: Both INI files have the correct values.

    While I'm here, I'll post the full text of each. I just copied them from the vanilla INI files and added the BMP references to increase APR (that part is working correctly).

    6524.ini
    // CHMM monk_male_human

    [general]
    animation_type=6000
    move_scale=9
    ellipse=16
    color_blood=47
    color_chunks=0
    sound_freq=5
    personal_space=3
    cast_frame=4
    combat_round_0=USDBASE1
    combat_round_1=USDBASE2
    combat_round_2=USDBASE3
    combat_round_3=USDBASE4
    combat_round_4=USDBASE5

    [character]
    armor_max_code=1
    can_lie_down=1
    detected_by_infravision=1
    double_blit=0
    equip_helmet=1
    split_bams=1
    false_color=1
    height_code=WQL
    height_code_helmet=WQL
    height_code_shield=
    resref=CHMM
    resref_paperdoll=CHMM
    resref_armor_base=M
    resref_armor_specific=M

    [sounds]
    attack=
    attack_frame=0
    awake=
    awake_frame=0
    cast=
    cast_frame=0
    conjure=
    conjure_frame=0
    damage=
    damage_frame=0
    die=
    die_frame=0
    head_turn=
    head_turn_frame=0
    ready=
    ready_frame=0
    shoot=
    shoot_frame=0
    twitch=
    twitch_frame=0
    walk=
    walk_frame=0
    attack_slash=
    attack_slash_frame=0
    attack_backslash=
    attack_backslash_frame=0
    attack_jab=
    attack_jab_frame=0
    emerge=
    emerge_frame=0
    hide=
    hide_frame=0
    sleep=
    sleep_frame=0
    battle_cry=
    battle_cry_frame=0
    selection=
    selection_frame=0
    fall=fal_02b
    fall_frame=0
    6525.ini
    // CHFM monk_female_human

    [general]
    animation_type=6000
    move_scale=9
    ellipse=16
    color_blood=47
    color_chunks=0
    sound_freq=5
    personal_space=3
    cast_frame=4
    combat_round_0=USDBASE1
    combat_round_1=USDBASE2
    combat_round_2=USDBASE3
    combat_round_3=USDBASE4
    combat_round_4=USDBASE5

    [character]
    armor_max_code=1
    can_lie_down=1
    detected_by_infravision=1
    double_blit=0
    equip_helmet=1
    split_bams=1
    false_color=1
    height_code=WQN
    height_code_helmet=WQN
    height_code_shield=
    resref=CHFM
    resref_paperdoll=CHFM
    resref_armor_base=M
    resref_armor_specific=M

    [sounds]
    attack=
    attack_frame=0
    awake=
    awake_frame=0
    cast=
    cast_frame=0
    conjure=
    conjure_frame=0
    damage=
    damage_frame=0
    die=
    die_frame=0
    head_turn=
    head_turn_frame=0
    ready=
    ready_frame=0
    shoot=
    shoot_frame=0
    twitch=
    twitch_frame=0
    walk=
    walk_frame=0
    attack_slash=
    attack_slash_frame=0
    attack_backslash=
    attack_backslash_frame=0
    attack_jab=
    attack_jab_frame=0
    emerge=
    emerge_frame=0
    hide=
    hide_frame=0
    sleep=
    sleep_frame=0
    battle_cry=
    battle_cry_frame=0
    selection=
    selection_frame=0
    fall=fal_02b
    fall_frame=0
  • kjeronkjeron Member Posts: 2,367
    Are you certain the animation change (or the correct animation) is getting assigned to the creature? That's all I can think of that would be causing this.
    semiticgoddess
  • semiticgoddesssemiticgoddess Member Posts: 14,903
    @kjeron: You found the solution again! It turns out that the problem was that, for the purposes of the "use .eff file" opcode, a monk is counted as a fighter, and when I tried to use two such opcodes, one of them targeting fighters and another targeting monks, the fighter .eff file got applied. I had to use a separate .spl file for each kit.
  • semiticgoddesssemiticgoddess Member Posts: 14,903
    Updated! The mod now also contains four similar kits for monks: the Stone Dancer, which can cast Stoneskin; the Water Dancer, which gets an extra half attack per round; the Flare Dancer, which deals 1 fire damage with unarmed strikes; and the Sky Dancer, which can teleport twice per day. All of them gain extra uses of Stunning Blow faster than other monks, so they're all very excellent at briefly stun-locking enemies.
  • semiticgoddesssemiticgoddess Member Posts: 14,903
    And I just added a paladin Sword Dancer as well.

    I think I'll group all of my kit mods into one big kitpack for easier use.
    Gusinda
Sign In or Register to comment.