Jump to content
The Dark Mod Forums

TDM Combat


Sotha

Recommended Posts

  • 5 months later...

I've been adjusting AI attack speeds, blocking speeds, damage. etc. to get the right settings for my play style and as I've done this I've noticed that enemy archers/bowman will kill their allies who stand between me and them. I don't know much about programming, but I think that it would be nice to make it so the AI will not fire an arrow if their ally is in their line of fire. If it's not too much trouble.

  • Like 1
Link to comment
Share on other sites

Or they could start wearing wooden boards under their shirts, like the ever so popular tax collectors of olde.

  • Like 1

Intel Sandy Bridge i7 2600K @ 3.4ghz stock clocks
8gb Kingston 1600mhz CL8 XMP RAM stock frequency
Sapphire Radeon HD7870 2GB FLeX GHz Edition @ stock @ 1920x1080

Link to comment
Share on other sites

Heh, I think anyone using a wooden board to stop an arrow getting them in the face is going to have bigger issues than the arrows

  • Like 2

Intel Sandy Bridge i7 2600K @ 3.4ghz stock clocks
8gb Kingston 1600mhz CL8 XMP RAM stock frequency
Sapphire Radeon HD7870 2GB FLeX GHz Edition @ stock @ 1920x1080

Link to comment
Share on other sites

  • 3 weeks later...

The existing combat system and features are very good! My only real complaint is that there are too few weapons with little variations, but I started another thread for this discussion. Other than that, it seems to be quite difficult in general: Even on the easiest setting you have a hard time defeating a guard in a sword duel, and the arena in the tutorial map is unbeatable without using some trickery (involving arrows and flash bombs).

 

Overall I feel that combat is not getting quite as much attention as it could be, just because TDM is stealth based so combat is considered of lesser importance. I'd personally like it if TDM continued to maintain focus and encouragement on stealth, while also considering combat a very important system that needs as much care and polishing. After all, this genre of game is often based on choice and the player's ability to do what they want and interact with everything, while some missions could additionally offer bosses which will force the player to fight or at least silently assassinate someone.

Edited by MirceaKitsune
Link to comment
Share on other sites

There are certain missions where you have to assassinate some bad guy, and even ones with bosses, I could tell you which ones but i find it is much better to be surprised by the mission in game. So, try lots of them.

 

I believe the original coder that put the combat the combat system in place is no longer active, thats probably why it hasnt been experimented upon as much. Also, it is a pretty good working base. You could think of ways of adding little bits of flavour, like heavy blows that cause a bit of stunning even when blocked, or more distinctive personalities for guards, like someone tht is really reckless and agreasive as opposed to someone that is cold and accurate, but the basics of it works really well. The combat system is what brought me to TDM in the first place. I had played Mount and Blade and was looking for a game with more depth that still had a complex combat system. I was amazed when i saw some melee videos on youtube showing off the fighting in tdm.

 

Anyways, there has been much discussion and suggestions for it through the ages, but unfortunately maby of the most needed enhancements to combat would need a mixture of AI work, which the team is willing to take, and animation work, which is not something anyone in the team can provide at this point, so untill more animators come along, it will be hard to talk about bigger changes.

 

Ps: by bigger changes i mean the way ai fight and react to the player, by strafing, taunting and the like, NOT the directional mechanics of dueling which is the core of the system.

Link to comment
Share on other sites

To Sirgen - Could you post by any chance those tweaks to AI's and player's stats you were experimenting with? You could put the stuff together on a pk4 and call it " Sirgen's enhanced AI duelling skills mod ". ;) I would be very interested in trying the changes. Specially if you restored one-hit fatal blows to unprotected head and chest, and increased levels of AI's reaction time and player's animation speed.

Edited by RPGista
Link to comment
Share on other sites

Hey RPGista!

 

I am not very computer savvy, so I don't know how to put my changes on a pk4. However, it is very easy to change the settings yourself if you have 7zip or winrar to unzip the def folder. Once you've unzipped the def folder there are many sub def folders pertaining to all sorts of gameplay. You probably already know all this, but there might be some who don't who would also like to know. the first thing I did across the board is change tdm_ai_melee_sets.def

 

I changed all stats across the board for sake of ease, so there is no difference between elites and untrained. One of my favorite changes was removing the wind-up pause for enemy attacks. Here's my current build for tdm_ai_melee_sets.def.

 

 

/**

* Represents different levels of melee skill by sets of spawnargs
* Each level may also be different at different player difficulty levels
*/
entityDef atdm:ai_melee_set_base
{
"editor_usage" "Base class for melee difficulty sets (Do not use)"
"editor_displayFolder" "AI/Internal"
// Default settings:
// Health offset added to the health in the AI's def file
// (may be positive or negative)
"health_offset" "0"
// fool me once, shame on you, fool me twice...
// third attack in a row in same direction is anticipated
"melee_num_rep_attacks" "3"
// attacks that are at least this far apart in time are not considered repeated
"melee_rep_attack_time" "10000" // 10 sec
// test: always able to parry if not attacking, use parry delay instead
// This variable was probably a bad idea, maybe leave it at zero
"melee_parry_recovery_min" "0"
"melee_parry_recovery_max" "0"
// amount of time the back swing is held
"melee_hold_time_min" "0"
"melee_hold_time_max" "0"
// max time they will hold a parry, waiting for the enemy to attack
"melee_parry_hold_min" "3000"
"melee_parry_hold_max" "5000"
// time they must wait between attacks
// TODO: Maybe decrease these a bit for hardest setting
"melee_attack_recovery_min" "0"
"melee_attack_recovery_max" "1000"
// time they must wait between attacks if they just got hit or parried
"melee_attack_long_recovery_min" "0"
"melee_attack_long_recovery_max" "1000"
// time they must wait to attack after they parry (shorter than attack_recovery)
"melee_riposte_recovery_min" "0"
"melee_riposte_recovery_max" "0"
// reaction time between seeing an attack coming and putting up a parry (critical to difficulty)
"melee_pre_parry_delay_min" "0"
"melee_pre_parry_delay_max" "0"
// repeated attacks along the same direction are anticipated and
// met with faster response(still possible to hit with fast parry-riposte)
"melee_repeated_pre_parry_delay_min" "0"
"melee_repeated_pre_parry_delay_max" "0"
// reaction time to the cessation of an attack (they keep holding the parry up for this time)
"melee_post_parry_delay_min" "0"
"melee_post_parry_delay_max" "0"
"melee_repeated_post_parry_delay_min" "0"
"melee_repeated_post_parry_delay_max" "0"
// Percent chance to counterattack into an enemy attack instead of parrying
// Setting this higher means more simultaneous hits
"melee_chance_to_counter" "0"
// default (fast) attack and parry anim speeds:
"anim_rate_melee_attack_rl" "1.2"
"anim_rate_melee_attack_lr" "1.15"
"anim_rate_melee_attack_over" "1.1"
"anim_rate_melee_attack_thrust" "1.35"
"anim_rate_melee_parry_rl" "2.2"
"anim_rate_melee_parry_lr" "2.2"
"anim_rate_melee_parry_over" "2.2"
"anim_rate_melee_parry_thrust" "2.2"
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Combat Difficulty = Normal
// *************************************************************
entityDef atdm:ai_melee_set_novice_normal
{
"editor_usage" "Melee difficulty set for AI skill level: novice."
"editor_displayFolder" "AI/Internal"
"inherit" "atdm:ai_melee_set_base"
// normal difficulty health offset:
"health_offset" "20" // "-50" made things far too easy
// hold back the attacks for this long
"melee_hold_time_min" "0"
"melee_hold_time_max" "0"
"melee_pre_parry_delay_min" "0"
"melee_pre_parry_delay_max" "0"
"melee_repeated_pre_parry_delay_min" "0"
"melee_repeated_pre_parry_delay_max" "0"
"melee_post_parry_delay_min" "0"
// sometimes they hesitate on their riposte
"melee_post_parry_delay_max" "0"
// reduced damage (still scales with weapon):
// 5 hits to kill player w/ longsword
"melee_damage_mod" "0.78"
// clumsy slow attacks instead of long melee hold time?
// tweak melee animation speeds here for gameplay
"anim_rate_melee_attack_rl" "1.2"
"anim_rate_melee_attack_lr" "1.15"
"anim_rate_melee_attack_over" "1.1"
// this one doesn't look right any slower
"anim_rate_melee_attack_thrust" "1.35"
}
// trained difficulty (WIP!)
entityDef atdm:ai_melee_set_trained_normal
{
"inherit" "atdm:ai_melee_set_skilled_normal"
// normal health offset:
"health_offset" "20" // "-50" made things far too easy
// novice level settings:
// hold back the attacks for this long
"melee_hold_time_min" "0"
"melee_hold_time_max" "0"
// parry response times
// split the difference between novice and skilled?
"melee_pre_parry_delay_min" "0"
"melee_pre_parry_delay_max" "0"
"melee_repeated_pre_parry_delay_min" "0"
"melee_repeated_pre_parry_delay_max" "0"
// reduced damage (still scales with weapon):
// 5 hits to kill player w/ longsword
"melee_damage_mod" "0.78"
// tweak melee animation speeds here for gameplay
"anim_rate_melee_attack_rl" "1.2"
"anim_rate_melee_attack_lr" "1.15"
"anim_rate_melee_attack_over" "1.1"
"anim_rate_melee_attack_thrust" "1.35"
}
entityDef atdm:ai_melee_set_skilled_normal
{
"inherit" "atdm:ai_melee_set_base"
// normal health offset:
"health_offset" "20" // "-50" made things far too easy
// time over which they hold the backswing
"melee_hold_time_min" "0"
"melee_hold_time_max" "0"
// reaction time between seeing an attack coming and putting up a parry (critical to difficulty)
"melee_pre_parry_delay_min" "0"
"melee_pre_parry_delay_max" "0"
// max time they will hold a parry, waiting for the enemy to attack
"melee_parry_hold_min" "3000"
"melee_parry_hold_max" "5000"
// time they must wait between attacks
// TODO: Maybe decrease these a bit for hardest setting
"melee_attack_recovery_min" "0"
"melee_attack_recovery_max" "1000"
// time they must wait between attacks if they just got hit or parried
"melee_attack_long_recovery_min" "0"
"melee_attack_long_recovery_max" "1000"
// time they must wait to attack after they parry (shorter than attack_recovery)
"melee_riposte_recovery_min" "0"
"melee_riposte_recovery_max" "0"
// repeated attacks along the same direction are anticipated and
// met with faster response(still possible to hit with fast parry-riposte)
"melee_repeated_pre_parry_delay_min" "0"
"melee_repeated_pre_parry_delay_max" "0"
// reaction time to the cessation of an attack (they keep holding the parry up for this time)
"melee_post_parry_delay_min" "0"
"melee_post_parry_delay_max" "0"
"melee_repeated_post_parry_delay_min" "0"
"melee_repeated_post_parry_delay_max" "0"
// Percent chance to counterattack into an enemy attack instead of parrying
// Setting this higher means more simultaneous hits
"melee_chance_to_counter" "0"
"melee_damage_mod" "0.78"
}
entityDef atdm:ai_melee_set_novice_hard
{
"inherit" "atdm:ai_melee_set_novice_normal"
// hard difficulty health offset:
"health_offset" "20"
// 4 hits to kill w/ longsword
"melee_damage_mod" "0.78"
}
entityDef atdm:ai_melee_set_trained_hard
{
"inherit" "atdm:ai_melee_set_trained_normal"
// hard difficulty health offset:
"health_offset" "20"
"melee_damage_mod" "0.78"
}
entityDef atdm:ai_melee_set_skilled_hard
{
"inherit" "atdm:ai_melee_set_skilled_normal"
// hard difficulty health offset:
"health_offset" "20"
"melee_damage_mod" "0.78"
}
entityDef atdm:ai_melee_set_novice_expert
{
"inherit" "atdm:ai_melee_set_novice_hard"
// expert difficulty health offset:
"health_offset" "20"
// 3 hits to kill w/ longsword
"melee_damage_mod" "0.78"
}
entityDef atdm:ai_melee_set_trained_expert
{
"inherit" "atdm:ai_melee_set_trained_hard"
// expert difficulty health offset:
"health_offset" "20"
"melee_damage_mod" "0.78"
}
entityDef atdm:ai_melee_set_skilled_expert
{
"inherit" "atdm:ai_melee_set_skilled_hard"
// expert difficulty health offset:
"health_offset" "20"
"melee_damage_mod" "0.78"
}
// ============= KNIFE FIGHTING SETS ==============
// Same as sword sets, but they can't block,
// so they should attack more frequently
entityDef atdm:ai_melee_set_knife_novice_normal
{
"inherit" "atdm:ai_melee_set_novice_normal"
// amount of time the back swing is held
"melee_hold_time_min" "0"
"melee_hold_time_max" "0"
"melee_attack_recovery_min" "0"
"melee_attack_recovery_max" "1000"
"melee_attack_long_recovery_min" "0"
"melee_attack_long_recovery_max" "1000"
}
entityDef atdm:ai_melee_set_knife_novice_hard
{
"inherit" "atdm:ai_melee_set_novice_hard"
// amount of time the back swing is held
"melee_hold_time_min" "0"
"melee_hold_time_max" "0"
"melee_attack_recovery_min" "0"
"melee_attack_recovery_max" "1000"
"melee_attack_long_recovery_min" "0"
"melee_attack_long_recovery_max" "1000"
}
entityDef atdm:ai_melee_set_knife_novice_expert
{
"inherit" "atdm:ai_melee_set_novice_expert"
// amount of time the back swing is held
"melee_hold_time_min" "0"
"melee_hold_time_max" "0"
"melee_attack_recovery_min" "0"
"melee_attack_recovery_max" "1000"
"melee_attack_long_recovery_min" "0"
"melee_attack_long_recovery_max" "1000"
}
entityDef atdm:ai_melee_set_knife_trained_normal
{
"inherit" "atdm:ai_melee_set_trained_normal"
// amount of time the back swing is held
"melee_hold_time_min" "0"
"melee_hold_time_max" "0"
"melee_attack_recovery_min" "0"
"melee_attack_recovery_max" "1000"
"melee_attack_long_recovery_min" "0"
"melee_attack_long_recovery_max" "1000"
}
entityDef atdm:ai_melee_set_knife_trained_hard
{
"inherit" "atdm:ai_melee_set_trained_hard"
// amount of time the back swing is held
"melee_hold_time_min" "0"
"melee_hold_time_max" "0"
"melee_attack_recovery_min" "0"
"melee_attack_recovery_max" "1000"
"melee_attack_long_recovery_min" "0"
"melee_attack_long_recovery_max" "1000"
}
entityDef atdm:ai_melee_set_knife_trained_expert
{
"inherit" "atdm:ai_melee_set_trained_expert"
// amount of time the back swing is held
"melee_hold_time_min" "0"
"melee_hold_time_max" "0"
"melee_attack_recovery_min" "0"
"melee_attack_recovery_max" "1000"
"melee_attack_long_recovery_min" "0"
"melee_attack_long_recovery_max" "1000"
}
entityDef atdm:ai_melee_set_knife_skilled_normal
{
"inherit" "atdm:ai_melee_set_skilled_normal"
// amount of time the back swing is held
"melee_hold_time_min" "0"
"melee_hold_time_max" "0"
"melee_attack_recovery_min" "0"
"melee_attack_recovery_max" "1000"
"melee_attack_long_recovery_min" "0"
"melee_attack_long_recovery_max" "1000"
}
entityDef atdm:ai_melee_set_knife_skilled_hard
{
"inherit" "atdm:ai_melee_set_skilled_hard"
// amount of time the back swing is held
"melee_hold_time_min" "0"
"melee_hold_time_max" "0"
"melee_attack_recovery_min" "0"
"melee_attack_recovery_max" "1000"
"melee_attack_long_recovery_min" "0"
"melee_attack_long_recovery_max" "1000"
}
entityDef atdm:ai_melee_set_knife_skilled_expert
{
"inherit" "atdm:ai_melee_set_skilled_expert"
"melee_attack_recovery_min" "0"
"melee_attack_recovery_max" "1000"
"melee_attack_long_recovery_min" "0"
"melee_attack_long_recovery_max" "1000"

I have also made changes to Darkmod.cfg,tdm_player_thief.def,tdm_weapon_arrow.def and tdm_weapon_shortsword.def.
I have three builds. One for combat (I die in one hit, I kill everything in one hit, no fall damage and mad "wall scaling skills" (mantling) I have a stealth build where the enemies attack speed and block speed animations are so fast that I have zero chance of winning in a fight. I also have a Mid build where sneaking is the best option, but I can still kill 1 guard fairly easily, 2 is a very hard fight, and once in a while I'm able to defeat 3 at a time. I am willing to post all my changes here if you'd like.
  • Like 1
Link to comment
Share on other sites

Here is my "Combat build"


Darkmod.cfg I think the only lines that I modified are these: seta pm_mantle_height "9"

seta pm_mantle_reach "1.5" I did this to create the illusion of being a master at scaling walls. It does break some missions though by making infiltration too easy.



unbindall

bind "ENTER" "_impulse51"

bind "ESCAPE" "togglemenu"

bind "SPACE" "_speed"

bind "-" "_impulse50"

bind "0" "_impulse10"

bind "1" "_impulse1"

bind "2" "_impulse2"

bind "3" "_impulse3"

bind "4" "_impulse4"

bind "5" "_impulse5"

bind "6" "_impulse6"

bind "7" "_impulse7"

bind "8" "_impulse8"

bind "9" "_impulse9"

bind "=" "_impulse49"

bind "[" "_impulse48"

bind "\" "_mlook"

bind "]" "_impulse47"

bind "^" "_impulse0"

bind "a" "_moveleft"

bind "c" "_impulse24"

bind "d" "_moveright"

bind "e" "_impulse46"

bind "f" "inventory_hotkey ''"

bind "g" "inventory_use '#str_02396'"

bind "i" "_impulse15"

bind "k" "inventory_cycle_group '#str_02392'"

bind "l" "inventory_use '#str_02395'"

bind "m" "_impulse51"

bind "o" "_impulse19"

bind "p" "_impulse52"

bind "q" "_impulse45"

bind "r" "_moveUp"

bind "s" "_back"

bind "u" "_impulse14"

bind "v" "inventory_hotkey '#str_02397'"

bind "w" "_forward"

bind "x" "_impulse23"

bind "y" "_zoom"

bind "BACKSPACE" "inventory_hotkey"

bind "PAUSE" "pause"

bind "UPARROW" "_forward"

bind "DOWNARROW" "_back"

bind "LEFTARROW" "_left"

bind "RIGHTARROW" "_right"

bind "ALT" "_strafe"

bind "SHIFT" "_button5"

bind "DEL" "_lookdown"

bind "PGDN" "_lookup"

bind "END" "_impulse18"

bind "F1" "_impulse23"

bind "F3" "_impulse17"

bind "F4" "savegame quick"

bind "F5" "loadgame"

bind "F6" "_impulse20"

bind "F7" "_impulse22"

bind "F12" "screenshot"

bind "MOUSE1" "_attack"

bind "MOUSE2" "_impulse41"

bind "MWHEELDOWN" "_impulse14"

bind "MWHEELUP" "_impulse15"

seta gui_mediumFontLimit "0.30"

seta gui_smallFontLimit "0.15"

seta radiant_entityMode "0"

seta net_socksPassword ""

seta net_socksUsername ""

seta net_socksPort "1080"

seta net_socksServer ""

seta net_socksEnabled "0"

seta win_ypos "0"

seta win_xpos "0"

seta sys_lang "english"

seta s_decompressionLimit "6"

seta s_useEAXReverb "0"

seta s_useOpenAL "0"

seta s_libOpenAL "openal32.dll"

seta s_numberOfSpeakers "2"

seta s_doorDistanceAdd "450"

seta s_globalFraction "0.8"

seta s_subFraction "0.75"

seta s_playDefaultSound "1"

seta s_volume_dB "0"

seta s_meterTopTime "2000"

seta s_reverse "0"

seta s_spatializationDecay "2"

seta s_maxSoundsPerShader "0"

seta r_screenshot_format "jpg"

seta r_debugArrowStep "120"

seta r_debugLineWidth "1"

seta r_debugLineDepthTest "0"

seta r_cgFragmentProfile "best"

seta r_cgVertexProfile "best"

seta r_forceLoadImages "0"

seta r_shadows "1"

seta r_skipBump "0"

seta r_skipSpecular "0"

seta r_skipNewAmbient "0"

seta r_renderer "best"

seta r_brightness "0.7"

seta r_gamma "0.8"

seta r_swapInterval "1"

seta r_useIndexBuffers "1"

seta r_customHeight "1080"

seta r_customWidth "1920"

seta r_fullscreen "1"

seta r_mode "-1"

seta r_multiSamples "0"

seta image_downSizeLimit "256"

seta image_ignoreHighQuality "0"

seta image_downSizeBumpLimit "128"

seta image_downSizeSpecularLimit "64"

seta image_downSizeBump "0"

seta image_downSizeSpecular "0"

seta image_useCache "0"

seta image_cacheMegs "20"

seta image_cacheMinK "200"

seta image_usePrecompressedTextures "1"

seta image_useNormalCompression "2"

seta image_useAllFormats "1"

seta image_useCompression "1"

seta image_preload "1"

seta image_roundDown "1"

seta image_forceDownSize "0"

seta image_downSize "0"

seta image_lodbias "0"

seta image_anisotropy "1"

seta image_filter "GL_LINEAR_MIPMAP_LINEAR"

seta gui_filter_game "0"

seta gui_filter_idle "0"

seta gui_filter_gameType "0"

seta gui_filter_players "0"

seta gui_filter_password "0"

seta net_clientDownload "1"

seta net_master4 ""

seta net_master3 ""

seta net_master2 ""

seta net_master1 ""

seta net_clientMaxRate "16000"

seta net_serverMaxClientRate "16000"

seta m_strafeSmooth "4"

seta m_smooth "8"

seta m_strafeScale "6.25"

seta m_yaw "0.022"

seta m_pitch "0.022"

seta sensitivity "20"

seta in_toggleZoom "0"

seta in_toggleCrouch "0"

seta in_toggleRun "0"

seta in_alwaysRun "0"

seta in_freeLook "1"

seta in_anglespeedkey "1.5"

seta in_pitchspeed "140"

seta in_yawspeed "140"

seta gui_configServerRate "0"

seta com_guid ""

seta com_preloadDemos "0"

seta com_compressDemos "1"

seta com_product_lang_ext "1"

seta com_videoRam "128"

seta com_showFPS "0"

seta com_purgeAll "0"

seta com_machineSpec "-1"

seta g_spectatorChat "0"

seta net_clientLagOMeter "1"

seta r_postprocess_bloomKernelSize "2"

seta r_postprocess_bloomIntensity "0"

seta r_postprocess "0"

seta net_serverDlTable ""

seta net_serverDlBaseURL ""

seta net_serverDownload "0"

seta mod_validSkins "skins/characters/player/marine_mp;skins/characters/player/marine_mp_green;skins/characters/player/marine_mp_blue;skins/characters/player/marine_mp_red;skins/characters/player/marine_mp_yellow"

seta g_mapCycle "mapcycle"

seta g_voteFlags "0"

seta g_gameReviewPause "10"

seta g_countDown "10"

seta g_password ""

seta g_testModelHeadJoint "Spine2"

seta g_testModelHead "atdm:ai_head_citywatch"

seta g_showBrass "1"

seta g_showProjectilePct "0"

seta g_showHud "1"

seta g_showPlayerShadow "0"

seta pm_walkspeed "70"

seta g_showcamerainfo "0"

seta g_damageScale "1"

seta g_decals "1"

seta g_doubleVision "1"

seta g_bloodEffects "1"

seta g_projectileLights "1"

seta g_muzzleFlash "1"

seta gui_CenterY "0.5"

seta gui_CenterX "0.5"

seta gui_Height "1.0"

seta gui_Width "1.0"

seta r_fovRatio "0"

seta r_aspectRatio "1"

seta ui_showGun "1"

seta ui_autoSwitch "1"

seta ui_team "Red"

seta ui_skin "skins/characters/player/marine_mp"

seta ui_name "Player"

seta si_serverURL ""

seta si_spectators "1"

seta si_usePass "0"

seta si_warmup "0"

seta si_teamDamage "0"

seta si_timeLimit "10"

seta si_fragLimit "10"

seta si_maxPlayers "4"

seta si_map "game/mp/d3dm1"

seta si_gameType "singleplayer"

seta si_name "DOOM Server"

seta tdm_lod_bias "1.0"

seta tdm_voice_from_off_volume "0"

seta tdm_voice_player_volume "0"

seta tdm_music_volume "0"

seta tdm_ambient_method "0"

seta tdm_door_auto_open_on_unlock "0"

seta tdm_bow_aimer "1"

seta tdm_lp_debug_hud "0"

seta tdm_lp_pawlow "0"

seta tdm_lp_randomize "1"

seta tdm_lp_auto_pick "0"

seta tdm_lp_autopick_attempts "1"

seta tdm_lp_pick_timeout "500"

seta tdm_lp_sample_delay "10"

seta tdm_lp_base_count "5"

seta tdm_empty_model "models/darkmod/misc/system/empty.lwo"

seta tdm_lg_split "0"

seta tdm_lg_model "models/darkmod/misc/system/lightgem.lwo"

seta tdm_lg_weak "0"

seta tdm_lg_interleave "1"

seta pm_rope_snd_rep_dist "32"

seta pm_min_stepsound_interval "200"

seta pm_stepvol_crouch_creep "-7"

seta pm_stepvol_crouch_run "4"

seta pm_stepvol_crouch_walk "-2"

seta pm_stepvol_creep "-5"

seta pm_stepvol_run "8"

seta pm_stepvol_walk "0"

seta tdm_underwater_blur "3"

seta tdm_rope_pull_force_factor "140"

seta tdm_inv_use_visual_feedback "1"

seta tdm_door_control "0"

seta tdm_inv_use_on_frob "1"

seta tdm_inv_loot_sound "frob_loot"

seta tdm_inv_hud_pickupmessages "1"

seta tdm_hud_hide_lightgem "0"

seta tdm_hud_opacity "0.7"

seta tdm_grabber_reverse_control "0"

seta tdm_bounce_sound_min_vel "80"

seta tdm_bounce_sound_max_vel "400"

seta tdm_throw_max_vel "900"

seta tdm_throw_time "1200"

seta tdm_throw_max "3500"

seta tdm_throw_min "600"

seta tdm_phys_show_momentum "0"

seta tdm_ai_vision_hardcore "1.5"

seta tdm_ai_vision_challenging "1.2"

seta tdm_ai_vision_forgiving "0.6"

seta tdm_ai_vision_nearly_blind "0.2"

seta tdm_ai_vision "3"

seta tdm_melee_difficulty "expert"

seta tdm_melee_max_particles "10"

seta tdm_melee_forbid_auto_parry "1"

seta tdm_melee_auto_parry "0"

seta tdm_melee_invert_parry "0"

seta tdm_melee_invert_attack "0"

seta tdm_melee_mouse_thresh_ "0"

seta tdm_dragged_item_highlight "0"

seta tdm_drag_encumber_max "0.4"

seta tdm_drag_encumber_maxmass "55"

seta tdm_drag_encumber_minmass "10"

seta tdm_drag_jump_masslimit "20"

seta tdm_drag_af_free "0"

seta tdm_drag_af_ground_timer "800"

seta tdm_drag_damping_af "0.4"

seta tdm_drag_damping "0.0"

seta tdm_drag_stuck_dist "38.0"

seta tdm_drag_force_max "100000"

seta tdm_drag_limit_force "1"

seta tdm_collision_damage_scale_horiz "0.5"

seta tdm_collision_damage_scale_vert "1"

seta tdm_frob_fadetime "100"

seta tdm_frob_width "10.0"

seta tdm_frob_distance_default "63"

seta pm_lean_toggle "0"

seta pm_lean_door_bounds_exp "8.0"

seta pm_lean_door_max "40"

seta pm_lean_door_increments "10"

seta pm_lean_to_valid_increments "25"

seta pm_lean_forward_stretch "15"

seta pm_lean_forward_height "0.4"

seta pm_lean_forward_time "400.0"

seta pm_lean_forward_angle "2"

seta pm_lean_stretch "2"

seta pm_lean_height "0.4"

seta pm_lean_time "400.0"

seta pm_lean_angle "15.0"

seta tdm_reattach_delay "100"

seta tdm_crouch_toggle_hold_time "400"

seta tdm_toggle_crouch "1"

seta tdm_footfall_sounds_movetype_specific "1"

seta pm_mantle_minflatness "0.707"

seta pm_mantle_height "9"

seta pm_mantle_reach "1.5"

seta pm_weightmod "1"

seta pm_push_max_mass "200"

seta pm_push_heavy_threshold "0.15"

seta pm_push_accel_time "1000"

seta pm_push_start_delay "1000"

seta pm_push_maximpulse "300"

seta pm_pushmod "0.15"

seta pm_max_swimspeed_mod "1.4"

seta pm_crouchmod "0.54"

seta pm_creepmod "0.44"

seta pm_runmod "2.12"

seta tdm_savegame_compress "1"

seta tdm_force_savegame_load "0"

seta tdm_mainmenu_confirmquit "1"

seta tdm_debug_aastype "aas32"

seta tdm_allow_http_access "1"

seta tdm_proxy_pass ""

seta tdm_proxy_user ""

seta tdm_proxy ""

seta tdm_fm_restart_delay "0"

seta tdm_default_relations_def "atdm:team_relations_default"

seta tdm_show_trainer_messages "1"

seta tdm_menu_music "1"

seta tdm_wideScreenMode "7"

seta tdm_interaction_vfp_type "1"

seta tdm_ai_show_aasfuncobstacle_state "0"

seta tdm_show_health "0"

seta tdm_ai_debug_greetings "0"

seta tdm_ai_debug_transition_barks "0"

seta tdm_ai_opt_update_enemypos_interleave "48"

seta tdm_ai_opt_interleavethinkframes "0"

seta tdm_ai_opt_interleavethinkskipPVS "0"

seta tdm_ai_opt_interleavethinkmaxdist "0"

seta tdm_ai_opt_interleavethinkmindist "0"

seta tdm_ai_visdist_show "0.0"

seta tdm_ai_search_show "0.0"

seta tdm_showko "0"

seta tdm_showsprop_radius "0"

seta tdm_showsprop "0"

seta tdm_spr_debug "0"

seta tdm_sndprop_disable "0"

seta tdm_ai_acuity_susp "1.2"

seta tdm_ai_acuity_L5 "1.5"

seta tdm_ai_acuity_L4 "1.3"

seta tdm_ai_acuity_L3 "1.1"

seta tdm_ai_show_conversationstate "0"

seta tdm_ai_show_enemy_visibility "0"

seta tdm_ai_sight_scale "1000.0"

seta tdm_ai_sight_thresh "1.0"

seta tdm_ai_showelevator "0"

seta tdm_ai_showdoor "0"

seta tdm_ai_debug_blocked "0"

seta tdm_ai_showAASarea "0"

seta tdm_ai_showgoalpos "0"

seta tdm_ai_showdest "0"

seta tdm_ai_showalert "0"

seta tdm_ai_showtasks "0"

seta tdm_ai_showanimstate "0"

seta tdm_ai_showko "0"

seta tdm_ai_showfov "0"

seta tdm_ai_debug "0"

seta tdm_ai_bumpobject_impulse "250"

seta tdm_ai_tact "20.0"

seta tdm_ai_sight_combat_cutoff "20.0"

seta tdm_ai_sightmin "15.0"

seta tdm_ai_sightmax "40.0"

seta tdm_ai_sight_mag "1.0"

seta tdm_ai_sight_prob "0.7"

seta tdm_ai_showbark "0"

seta tdm_ai_sndvol "0.0"

seta tdm_player_wait_until_ready "1"

seta tdm_ai_hearing_hardcore "1.4"

seta tdm_ai_hearing_challenging "1.0"

seta tdm_ai_hearing_forgiving "0.8"

seta tdm_ai_hearing_nearly_deaf "0.4"

seta tdm_ai_hearing "3"



tdm_ai_melee_sets.def


The line: "melee_damage_mod" "9" is how I made it so that the enemy kills me in one hit.


I modified these lines to make the enemy attack a little bit faster and to block much faster:// default (fast) attack and parry anim speeds:

"anim_rate_melee_attack_rl" "1.2"

"anim_rate_melee_attack_lr" "1.15"

"anim_rate_melee_attack_over" "1.1"

"anim_rate_melee_attack_thrust" "1.35"


"anim_rate_melee_parry_rl" "2"

"anim_rate_melee_parry_lr" "2"

"anim_rate_melee_parry_over" "2"

"anim_rate_melee_parry_thrust" "2"


} There are 3 different sets of lines to adjust the ai's attack speeds, but only one for blocking speed.


/**


* Represents different levels of melee skill by sets of spawnargs

* Each level may also be different at different player difficulty levels

*/


entityDef atdm:ai_melee_set_base

{

"editor_usage" "Base class for melee difficulty sets (Do not use)"

"editor_displayFolder" "AI/Internal"


// Default settings:


// Health offset added to the health in the AI's def file

// (may be positive or negative)

"health_offset" "0"


// fool me once, shame on you, fool me twice...

// third attack in a row in same direction is anticipated

"melee_num_rep_attacks" "3"

// attacks that are at least this far apart in time are not considered repeated

"melee_rep_attack_time" "10000" // 10 sec


// test: always able to parry if not attacking, use parry delay instead

// This variable was probably a bad idea, maybe leave it at zero

"melee_parry_recovery_min" "0"

"melee_parry_recovery_max" "0"


// amount of time the back swing is held

"melee_hold_time_min" "0"

"melee_hold_time_max" "0"


// max time they will hold a parry, waiting for the enemy to attack

"melee_parry_hold_min" "3000"

"melee_parry_hold_max" "5000"


// time they must wait between attacks

// TODO: Maybe decrease these a bit for hardest setting

"melee_attack_recovery_min" "0"

"melee_attack_recovery_max" "1000"

// time they must wait between attacks if they just got hit or parried

"melee_attack_long_recovery_min" "0"

"melee_attack_long_recovery_max" "1000"


// time they must wait to attack after they parry (shorter than attack_recovery)

"melee_riposte_recovery_min" "0"

"melee_riposte_recovery_max" "0"

// reaction time between seeing an attack coming and putting up a parry (critical to difficulty)

"melee_pre_parry_delay_min" "0"

"melee_pre_parry_delay_max" "0"

// repeated attacks along the same direction are anticipated and

// met with faster response(still possible to hit with fast parry-riposte)

"melee_repeated_pre_parry_delay_min" "0"

"melee_repeated_pre_parry_delay_max" "0"


// reaction time to the cessation of an attack (they keep holding the parry up for this time)

"melee_post_parry_delay_min" "0"

"melee_post_parry_delay_max" "0"

"melee_repeated_post_parry_delay_min" "0"

"melee_repeated_post_parry_delay_max" "0"


// Percent chance to counterattack into an enemy attack instead of parrying

// Setting this higher means more simultaneous hits

"melee_chance_to_counter" "0"


// default (fast) attack and parry anim speeds:

"anim_rate_melee_attack_rl" "1.2"

"anim_rate_melee_attack_lr" "1.15"

"anim_rate_melee_attack_over" "1.1"

"anim_rate_melee_attack_thrust" "1.35"


"anim_rate_melee_parry_rl" "2"

"anim_rate_melee_parry_lr" "2"

"anim_rate_melee_parry_over" "2"

"anim_rate_melee_parry_thrust" "2"

}



// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

// Combat Difficulty = Normal

// *************************************************************


entityDef atdm:ai_melee_set_novice_normal

{

"editor_usage" "Melee difficulty set for AI skill level: novice."

"editor_displayFolder" "AI/Internal"


"inherit" "atdm:ai_melee_set_base"


// normal difficulty health offset:

"health_offset" "20" // "-50" made things far too easy


// hold back the attacks for this long

"melee_hold_time_min" "0"

"melee_hold_time_max" "0"



"melee_pre_parry_delay_min" "0"

"melee_pre_parry_delay_max" "0"


"melee_repeated_pre_parry_delay_min" "0"

"melee_repeated_pre_parry_delay_max" "0"


"melee_post_parry_delay_min" "0"

// sometimes they hesitate on their riposte

"melee_post_parry_delay_max" "0"


// reduced damage (still scales with weapon):

// 5 hits to kill player w/ longsword

"melee_damage_mod" "9"


// clumsy slow attacks instead of long melee hold time?

// tweak melee animation speeds here for gameplay

"anim_rate_melee_attack_rl" "1.2"

"anim_rate_melee_attack_lr" "1.15"

"anim_rate_melee_attack_over" "1.1"

// this one doesn't look right any slower

"anim_rate_melee_attack_thrust" "1.35"

}



// trained difficulty (WIP!)

entityDef atdm:ai_melee_set_trained_normal

{

"inherit" "atdm:ai_melee_set_skilled_normal"


// normal health offset:

"health_offset" "20" // "-50" made things far too easy


// novice level settings:

// hold back the attacks for this long

"melee_hold_time_min" "0"

"melee_hold_time_max" "0"


// parry response times

// split the difference between novice and skilled?

"melee_pre_parry_delay_min" "0"

"melee_pre_parry_delay_max" "0"


"melee_repeated_pre_parry_delay_min" "0"

"melee_repeated_pre_parry_delay_max" "0"


// reduced damage (still scales with weapon):

// 5 hits to kill player w/ longsword

"melee_damage_mod" "9"


// tweak melee animation speeds here for gameplay

"anim_rate_melee_attack_rl" "1.2"

"anim_rate_melee_attack_lr" "1.15"

"anim_rate_melee_attack_over" "1.1"

"anim_rate_melee_attack_thrust" "1.35"

}


entityDef atdm:ai_melee_set_skilled_normal

{

"inherit" "atdm:ai_melee_set_base"


// normal health offset:

"health_offset" "20" // "-50" made things far too easy


// time over which they hold the backswing

"melee_hold_time_min" "0"

"melee_hold_time_max" "0"


// reaction time between seeing an attack coming and putting up a parry (critical to difficulty)

"melee_pre_parry_delay_min" "0"

"melee_pre_parry_delay_max" "0"


// max time they will hold a parry, waiting for the enemy to attack

"melee_parry_hold_min" "3000"

"melee_parry_hold_max" "5000"


// time they must wait between attacks

// TODO: Maybe decrease these a bit for hardest setting

"melee_attack_recovery_min" "0"

"melee_attack_recovery_max" "1000"

// time they must wait between attacks if they just got hit or parried

"melee_attack_long_recovery_min" "0"

"melee_attack_long_recovery_max" "1000"


// time they must wait to attack after they parry (shorter than attack_recovery)

"melee_riposte_recovery_min" "0"

"melee_riposte_recovery_max" "0"


// repeated attacks along the same direction are anticipated and

// met with faster response(still possible to hit with fast parry-riposte)

"melee_repeated_pre_parry_delay_min" "0"

"melee_repeated_pre_parry_delay_max" "0"


// reaction time to the cessation of an attack (they keep holding the parry up for this time)

"melee_post_parry_delay_min" "0"

"melee_post_parry_delay_max" "0"

"melee_repeated_post_parry_delay_min" "0"

"melee_repeated_post_parry_delay_max" "0"


// Percent chance to counterattack into an enemy attack instead of parrying

// Setting this higher means more simultaneous hits

"melee_chance_to_counter" "0"



"melee_damage_mod" "9"

}












entityDef atdm:ai_melee_set_novice_hard

{

"inherit" "atdm:ai_melee_set_novice_normal"


// hard difficulty health offset:

"health_offset" "20"


// 4 hits to kill w/ longsword

"melee_damage_mod" "9"

}


entityDef atdm:ai_melee_set_trained_hard

{

"inherit" "atdm:ai_melee_set_trained_normal"


// hard difficulty health offset:

"health_offset" "20"


"melee_damage_mod" "9"

}




entityDef atdm:ai_melee_set_skilled_hard

{

"inherit" "atdm:ai_melee_set_skilled_normal"


// hard difficulty health offset:

"health_offset" "20"


"melee_damage_mod" "9"

}






entityDef atdm:ai_melee_set_novice_expert

{

"inherit" "atdm:ai_melee_set_novice_hard"


// expert difficulty health offset:

"health_offset" "20"


// 3 hits to kill w/ longsword

"melee_damage_mod" "9"

}





entityDef atdm:ai_melee_set_trained_expert

{

"inherit" "atdm:ai_melee_set_trained_hard"


// expert difficulty health offset:

"health_offset" "20"


"melee_damage_mod" "9"

}




entityDef atdm:ai_melee_set_skilled_expert

{

"inherit" "atdm:ai_melee_set_skilled_hard"


// expert difficulty health offset:

"health_offset" "20"


"melee_damage_mod" "9"

}







// ============= KNIFE FIGHTING SETS ==============

// Same as sword sets, but they can't block,

// so they should attack more frequently


entityDef atdm:ai_melee_set_knife_novice_normal

{

"inherit" "atdm:ai_melee_set_novice_normal"


// amount of time the back swing is held

"melee_hold_time_min" "0"

"melee_hold_time_max" "0"


"melee_attack_recovery_min" "0"

"melee_attack_recovery_max" "1000"


"melee_attack_long_recovery_min" "0"

"melee_attack_long_recovery_max" "1000"

}


entityDef atdm:ai_melee_set_knife_novice_hard

{

"inherit" "atdm:ai_melee_set_novice_hard"


// amount of time the back swing is held

"melee_hold_time_min" "0"

"melee_hold_time_max" "0"


"melee_attack_recovery_min" "0"

"melee_attack_recovery_max" "1000"


"melee_attack_long_recovery_min" "0"

"melee_attack_long_recovery_max" "1000"

}


entityDef atdm:ai_melee_set_knife_novice_expert

{

"inherit" "atdm:ai_melee_set_novice_expert"


// amount of time the back swing is held

"melee_hold_time_min" "0"

"melee_hold_time_max" "0"


"melee_attack_recovery_min" "0"

"melee_attack_recovery_max" "1000"


"melee_attack_long_recovery_min" "0"

"melee_attack_long_recovery_max" "1000"

}


entityDef atdm:ai_melee_set_knife_trained_normal

{

"inherit" "atdm:ai_melee_set_trained_normal"


// amount of time the back swing is held

"melee_hold_time_min" "0"

"melee_hold_time_max" "0"


"melee_attack_recovery_min" "0"

"melee_attack_recovery_max" "1000"


"melee_attack_long_recovery_min" "0"

"melee_attack_long_recovery_max" "1000"

}


entityDef atdm:ai_melee_set_knife_trained_hard

{

"inherit" "atdm:ai_melee_set_trained_hard"


// amount of time the back swing is held

"melee_hold_time_min" "0"

"melee_hold_time_max" "0"


"melee_attack_recovery_min" "0"

"melee_attack_recovery_max" "1000"


"melee_attack_long_recovery_min" "0"

"melee_attack_long_recovery_max" "1000"

}


entityDef atdm:ai_melee_set_knife_trained_expert

{

"inherit" "atdm:ai_melee_set_trained_expert"


// amount of time the back swing is held

"melee_hold_time_min" "0"

"melee_hold_time_max" "0"


"melee_attack_recovery_min" "0"

"melee_attack_recovery_max" "1000"


"melee_attack_long_recovery_min" "0"

"melee_attack_long_recovery_max" "1000"

}


entityDef atdm:ai_melee_set_knife_skilled_normal

{

"inherit" "atdm:ai_melee_set_skilled_normal"


// amount of time the back swing is held

"melee_hold_time_min" "0"

"melee_hold_time_max" "0"


"melee_attack_recovery_min" "0"

"melee_attack_recovery_max" "1000"


"melee_attack_long_recovery_min" "0"

"melee_attack_long_recovery_max" "1000"

}


entityDef atdm:ai_melee_set_knife_skilled_hard

{

"inherit" "atdm:ai_melee_set_skilled_hard"


// amount of time the back swing is held

"melee_hold_time_min" "0"

"melee_hold_time_max" "0"


"melee_attack_recovery_min" "0"

"melee_attack_recovery_max" "1000"


"melee_attack_long_recovery_min" "0"

"melee_attack_long_recovery_max" "1000"

}


entityDef atdm:ai_melee_set_knife_skilled_expert

{

"inherit" "atdm:ai_melee_set_skilled_expert"


"melee_attack_recovery_min" "0"

"melee_attack_recovery_max" "1000"


"melee_attack_long_recovery_min" "0"

"melee_attack_long_recovery_max" "1000"

}



tdm_player_thief.def


I modified these values to make it so there is no fall damage: "editor_float collision_damage_threshold_min" "Collision damage below this value is ignored."

"collision_damage_threshold_min" "998"


"editor_float collision_damage_threshold_hard" "Collision damage above this value is considered 'hard'."

"collision_damage_threshold_hard" "999"


// vim:ts=4:sw=4:cindent


/***********************************************************************


TDM single player model and its related entities.


***********************************************************************/


model model_player_thief {


//offset ( 0 0 1 )


mesh models/md5/chars/thief/tdm_ai_thief.md5mesh


channel torso ( *Spine1 )

channel legs ( *origin - *Spine )


anim af_pose models/md5/chars/thief/af_pose.md5anim

anim ik_pose models/md5/chars/thief/af_pose.md5anim

anim initial models/md5/chars/thief/af_pose.md5anim


anim idle models/md5/chars/thief/idle.md5anim


anim crouch_down models/md5/chars/thief/crouch_down.md5anim


anim crouch models/md5/chars/thief/crouch_idle.md5anim

anim crouch_up models/md5/chars/thief/crouch_up.md5anim



anim crouch_walk models/md5/chars/thief/crouch.md5anim

anim crouch_walk_backwards models/md5/chars/thief/crouch_backwards.md5anim

anim walk models/md5/chars/thief/walk.md5anim

anim walk_backwards models/md5/chars/thief/walk_backwards.md5anim

anim walk_strafe_left models/md5/chars/thief/walk_strafe_left.md5anim

anim walk_strafe_right models/md5/chars/thief/walk_strafe_right.md5anim


anim run_forward models/md5/chars/thief/run.md5anim



anim run_backwards models/md5/chars/thief/run_backwards.md5anim

{

prevent_idle_override

}

anim run_strafe_left models/md5/chars/thief/run_strafe_left.md5anim

anim run_strafe_right models/md5/chars/thief/run_strafe_right.md5anim


/**

* DarkMod Creep animations:

**/


anim creep_forward models/md5/chars/thief/creep_forward.md5anim

anim creep_backwards models/md5/chars/thief/creep_backwards.md5anim

anim creep_strafe_left models/md5/chars/thief/creep_strafe_left.md5anim

anim creep_strafe_right models/md5/chars/thief/creep_strafe_right.md5anim


/**

* DarkMod Crouch Run and Crouch Creep Animations

**/


anim crouch_creep models/md5/chars/thief/crouch_creep.md5anim

anim crouch_creep_backwards models/md5/chars/thief/crouch_creep_backwards.md5anim

anim crouch_run models/md5/chars/thief/crouch.md5anim

anim crouch_run_backwards models/md5/chars/thief/crouch_backwards.md5anim


/**

* DarkMod Lean Animations

**/


anim lean_forward models/md5/chars/thief/lean_f.md5anim


anim lean_right models/md5/chars/thief/lean_r.md5anim

anim lean_left models/md5/chars/thief/lean_l.md5anim


/*************************************************************/


anim jump models/md5/chars/thief/jump.md5anim {

prevent_idle_override




}

anim run_jump models/md5/chars/thief/jump.md5anim {

prevent_idle_override


}

anim soft_land models/md5/chars/thief/soft_land.md5anim {

prevent_idle_override

}

anim hard_land models/md5/chars/thief/hard_land.md5anim {

prevent_idle_override

}

anim fall models/md5/chars/thief/hard_land.md5anim {

prevent_idle_override

}

anim turn_left models/md5/chars/thief/turn_left.md5anim {

prevent_idle_override

}

anim turn_right models/md5/chars/thief/turn_right.md5anim {

prevent_idle_override

}

/** anim pain models/md5/chars/thief/painchest.md5anim {

prevent_idle_override

}

anim pain_head models/md5/chars/thief/painhead.md5anim {

prevent_idle_override

}


anim pain_right_arm models/md5/chars/thief/painrightarm.md5anim {

prevent_idle_override

}


anim pain_left_arm models/md5/chars/thief/painleftarm.md5anim {

prevent_idle_override

}


anim pain_chest models/md5/chars/thief/painchest.md5anim {

prevent_idle_override

} **/

}


/***********************************************************************


atdm:player_base


***********************************************************************/


entityDef atdm:player_base {

"inherit" "atdm:entity_base"

"spawnclass" "idPlayer"

"scriptobject" "player"

"ragdoll" "guard_base"


"editor_displayFolder" "Internal"

"editor_usage" "Base class for the player, defining default values."


"hud" "guis/tdm_hud.gui"

"mphud" "guis/mphud.gui"

// Tels: We do not have a crosshair or a talk cursor

// "cursor" "guis/cursor.gui"


"editor_float blink_min" "Minimum time between eye blinking, in seconds."

"editor_float blink_max" "Maximum time between eye blinking, in seconds."

"blink_min" "2.5"

"blink_max" "8.0"


// It's a person

"AIUse" "AIUSE_PERSON"

// It's a Thief!

"personType" "PERSONTYPE_THIEF"


"editor_var def_weapon" "Points to the entity that represents the weapon for slot X. Example: def_weapon0."


// Player weapons (the integer index is important)

"def_weapon0" "atdm:weapon_unarmed"

"def_weapon1" "atdm:weapon_blackjack"

"def_weapon2" "atdm:weapon_shortsword"

"def_weapon3" "atdm:weapon_broadhead"

"def_weapon4" "atdm:weapon_waterarrow"

"def_weapon5" "atdm:weapon_firearrow"

"def_weapon6" "atdm:weapon_ropearrow"

"def_weapon7" "atdm:weapon_gasarrow"

"def_weapon8" "atdm:weapon_noisemaker"

"def_weapon9" "atdm:weapon_mossarrow" // grayman #2787

"def_weapon10" "atdm:weapon_vinearrow" // grayman #2787



"pm_jumpheight" "48"

"pm_stepsize" "16"

//"pm_crouchspeed" "80"

"pm_walkspeed" "60"

//"pm_runspeed" "220"

"pm_noclipspeed" "200"

"pm_minviewpitch" "-89" // looking up

"pm_maxviewpitch" "89" // looking down

"pm_crouchheight" "38"

"pm_crouchviewheight" "34"


"pm_mantle_minflatness" "0.707" // can't mantle on anything steeper than 45 degrees; see cvar description


// material dependent climbing speeds (fraction of walk speed):

"climb_max_speed_vert_default" "0.5"

"climb_max_speed_horiz_default" "2.3" // needs to be high for some reason


"pm_normalheight" "74"

"pm_normalviewheight" "68"

"pm_deadheight" "20"

"pm_deadviewheight" "10"

"pm_crouchrate" "0.87"

"pm_bboxwidth" "32"


// movement settings


"pm_bobroll" "0.0015" //side to side roll

"pm_bobpitch" "0.001" //forward roll

"pm_bobup" "0.03" //upward bounce

"pm_runroll" "0.003" //running side roll

"pm_runpitch" "0.001" //run forward pitch

"pm_runbob" "0.35" //speed of run bob

"pm_walkbob" "0.3" //speed of walk bob

"pm_crouchbob" "0.2" //speed of crouch bob


"pm_modelview" "0" // 0 == normal, 1 == view inside model, 2 == view inside model when dead

"pm_usecylinder" "1" // 0 == default, 1 == use cylinder approximation for bounding box. Needed for Dark Mod


"editor_float pain_delay" "How long to wait before playing pain sound, in seconds."


"pain_delay" "0.5"

"respawn_delay" "1.7" // minimum delay for respawning after death


// stats

"editor_int maxhealth" "The maximum health the player can have."

"health" "100"

"maxhealth" "100"


"editor_float collision_damage_threshold_min" "Collision damage below this value is ignored."

"collision_damage_threshold_min" "998"


"editor_float collision_damage_threshold_hard" "Collision damage above this value is considered 'hard'."

"collision_damage_threshold_hard" "999"


"mouth_offset" "0 0 15" // grayman #1488

"eye_offset" "0 0 19" // grayman #3525


"stamina" "120"

"armor" "0"

"maxarmor" "125"


// player is always considered an objective ent for end mission location goals

"objective_ent" "1"


// Don't spawn moss-blobs on the player entity

"nomoss" "1"


// ishtvan: I'm not sure why this was set to 0 but it wants to be 1 for melee

// "bleed" "0"

"bleed" "1"


// don't let arrows stick out of the player, looks... awkward

"arrowsticking_disabled" "1"


"bone_focus" "headcontrol"

"bone_leftEye" "Leyeaim"

"bone_rightEye" "Reyeaim"

"bone_hips" "Spine"

"bone_chest" "Spine2" // AI aim location

"bone_head" "Head"// AI aim location


"damage_zone head" "*Neck"

"damage_zone chest" "*Spine1 -*Neck"

"damage_zone left_arm" "*LeftArm"

"damage_zone right_arm" "*RightArm"

"damage_zone legs" "origin Spine"

"damage_scale head" "1"


"ik_numLegs" "2"

"ik_minWaistAnkleDist" "16"

"ik_footSize" "4"

"ik_waist" "Hips"

"ik_hip1" "LeftUpLeg"

"ik_hip2" "RightUpLeg"

"ik_knee1" "LeftLeg"

"ik_knee2" "RightLeg"

"ik_ankle1" "LeftFoot"

"ik_ankle2" "RightFoot"

//normally a knee joint

//"ik_dir1" "LeftFoot"

//"ik_dir2" "RightFoot"

"ik_foot1" "LeftToeBase"

"ik_foot2" "RightToeBase"


"ik_numArms" "2"

"ik_shoulder1" "RightArm"

"ik_shoulder2" "LeftArm"

"ik_elbroadhead1" "RightForeArm"

"ik_elbroadhead2" "LeftForeArm"

"ik_hand1" "RightHand"

"ik_hand2" "LeftHand"


"snd_climb_vert_default" "movement_ladder"

"snd_climb_horiz_default" "movement_ladder"

"snd_climb_vert_metal" "tdm_footstep_metal_walk"

"snd_climb_horiz_metal" "tdm_footstep_metal_walk"

"snd_climb_vert_foliage" "tdm_footstep_grass_crouch_walk"

"snd_climb_horiz_foliage" "tdm_footstep_grass_crouch_walk"

"snd_climb_vert_rope" "climb_rope_hemp"

"snd_climb_horiz_rope" "climb_rope_hemp"

"snd_climb_vert_chain" "climb_chain"

"snd_climb_horiz_chain" "climb_chain"

"snd_climb_vert_nosound" "nosound"

"snd_climb_horiz_nosound" "nosound"


"snd_rope_climb" "climb_rope_hemp"

"snd_drop_item_failed" "drop_item_failed"



"snd_death" "tdm_player_die"

"snd_death_liquid" "tdm_player_drown"


"snd_pain_small" "tdm_player_damage_hphigh"

"snd_pain_medium" "tdm_player_damage_hphigh"

"snd_pain_large" "tdm_player_damage_hplow"

"snd_pain_huge" "tdm_player_damage_hplow"


"snd_damage_land_soft" "tdm_player_damage_softlanding"

"snd_damage_land_hard" "tdm_player_damage_hardlanding"

"snd_doublevision" "player_sounds_doublevision"

"snd_thud" "player_sounds_thud"

"snd_heartbeat" "player_sounds_heartbeat"

"snd_heartbeat_dying" "player_sounds_heartbeat_dying"

"snd_skipcinematic" "player_sounds_skipcinematic"

"snd_guienter" "player_sounds_guienter"

"snd_guiexit" "player_sounds_guiexit"

"snd_healthpulse" "nosound"

"snd_hitArmor" "player_sounds_hitArmor"

"snd_hitFlesh" "player_sounds_hitFlesh"


"snd_airGasp" "tdm_player_drown"

"snd_resurface" "tdm_player_deepbreath"


"snd_noAir" "tdm_player_submerge"

"snd_teleport_exit" "player_sounds_teleportExit"

"snd_teleport_start" "player_sounds_teleportStart"

"snd_burn" "tdm_player_damage_fire"

"snd_healthtake" ""


"snd_mission_start" "mission_start"

"snd_new_objective" "mission_new_objective"

"snd_objective_complete" "mission_objective"

"snd_objective_failed" "mission_objective_failed"


"editor_snd snd_shoulder_body" "Sound played when the player shoulders a body."

"editor_snd snd_shoulder_body_heavy" "Sound played when the player shoulders a heavy body."

"snd_shoulder_body" "tdm_player_pickup_body"

"snd_shoulder_body_heavy" "tdm_player_pickup_body_fat"


"snd_player_sigh" "tdm_player_sigh"

"snd_player_cough" "tdm_player_cough"

"snd_player_choke_gas" "tdm_player_choke_gas"


// grayman #3010 - mantling sounds

"snd_player_mantle_pull" "tdm_player_mantle_pull"

"snd_player_mantle_push" "tdm_player_mantle_push"


// grayman #3026 - tired sounds for bow animation

"snd_player_tired" "tdm_player_tired"


// material specific footsteps (DarkMod SFX)

//"editor_snd snd_footstep" "Sound played when the player makes a step on the specified surface."


// greebo: The following movetype-dependent footstep shaders are used

// when the CVAR tdm_footfall_sounds_movetype_specific is set to "1" (the default)

// although there are a lot of shaders, they actually refer to a small set of sound files.

// Otherwise the fallback shader "snd_footstep_<material>" is taken.


// Dirt variations

"snd_footstep_dirt_walk" "tdm_footstep_dirt_walk"

"snd_footstep_dirt_run" "tdm_footstep_dirt_run"

"snd_footstep_dirt_creep" "tdm_footstep_dirt_walk_creep"

"snd_footstep_dirt_crouch_walk" "tdm_footstep_dirt_crouch_walk"

"snd_footstep_dirt_crouch_run" "tdm_footstep_dirt_crouch_run"

"snd_footstep_dirt_crouch_creep" "tdm_footstep_dirt_crouch_creep"

"snd_jump_dirt" "tdm_footstep_dirt_jump_land"


// Sand is using "dirt" sounds

"snd_footstep_sand_walk" "tdm_footstep_dirt_walk"

"snd_footstep_sand_run" "tdm_footstep_dirt_run"

"snd_footstep_sand_creep" "tdm_footstep_dirt_walk_creep"

"snd_footstep_sand_crouch_walk" "tdm_footstep_dirt_crouch_walk"

"snd_footstep_sand_crouch_run" "tdm_footstep_dirt_crouch_run"

"snd_footstep_sand_crouch_creep" "tdm_footstep_dirt_crouch_creep"

"snd_jump_sand" "tdm_footstep_dirt_jump_land"


// Grass variations

"snd_footstep_grass_walk" "tdm_footstep_grass_walk"

"snd_footstep_grass_run" "tdm_footstep_grass_run"

"snd_footstep_grass_creep" "tdm_footstep_grass_walk_creep"

"snd_footstep_grass_crouch_walk" "tdm_footstep_grass_crouch_walk"

"snd_footstep_grass_crouch_run" "tdm_footstep_grass_crouch_run"

"snd_footstep_grass_crouch_creep" "tdm_footstep_grass_crouch_creep"

"snd_jump_grass" "tdm_footstep_grass_jump_land"


// Straw is using "grass" sounds

"snd_footstep_straw_walk" "tdm_footstep_grass_walk"

"snd_footstep_straw_run" "tdm_footstep_grass_run"

"snd_footstep_straw_creep" "tdm_footstep_grass_walk_creep"

"snd_footstep_straw_crouch_walk" "tdm_footstep_grass_crouch_walk"

"snd_footstep_straw_crouch_run" "tdm_footstep_grass_crouch_run"

"snd_footstep_straw_crouch_creep" "tdm_footstep_grass_crouch_creep"

"snd_jump_straw" "tdm_footstep_grass_jump_land"


// Stone variations

"snd_footstep_stone_walk" "tdm_footstep_stone_walk"

"snd_footstep_stone_run" "tdm_footstep_stone_run"

"snd_footstep_stone_creep" "tdm_footstep_stone_walk_creep"

"snd_footstep_stone_crouch_walk" "tdm_footstep_stone_crouch_walk"

"snd_footstep_stone_crouch_run" "tdm_footstep_stone_crouch_run"

"snd_footstep_stone_crouch_creep" "tdm_footstep_stone_crouch_creep"

"snd_jump_stone" "tdm_footstep_stone_jump_land"


// Tile variations

"snd_footstep_tile_walk" "tdm_footstep_tile_walk"

"snd_footstep_tile_run" "tdm_footstep_tile_run"

"snd_footstep_tile_creep" "tdm_footstep_tile_walk_creep"

"snd_footstep_tile_crouch_walk" "tdm_footstep_tile_crouch_walk"

"snd_footstep_tile_crouch_run" "tdm_footstep_tile_crouch_run"

"snd_footstep_tile_crouch_creep" "tdm_footstep_tile_crouch_creep"

"snd_jump_tile" "tdm_footstep_tile_jump_land"


// Puddle (Water) variations

"snd_footstep_puddle_walk" "tdm_footstep_water_walk"

"snd_footstep_puddle_run" "tdm_footstep_water_run"

"snd_footstep_puddle_creep" "tdm_footstep_water_walk_creep"

"snd_footstep_puddle_crouch_walk" "tdm_footstep_water_crouch_walk"

"snd_footstep_puddle_crouch_run" "tdm_footstep_water_crouch_run"

"snd_footstep_puddle_crouch_creep" "tdm_footstep_water_crouch_creep"

"snd_jump_puddle" "tdm_footstep_water_jump_land"


// Liquid (water) variations -- SteveL #3693

"snd_footstep_liquid_walk" "tdm_footstep_water_walk"

"snd_footstep_liquid_run" "tdm_footstep_water_run"

"snd_footstep_liquid_creep" "tdm_footstep_water_walk_creep"

"snd_footstep_liquid_crouch_walk" "tdm_footstep_water_crouch_walk"

"snd_footstep_liquid_crouch_run" "tdm_footstep_water_crouch_run"

"snd_footstep_liquid_crouch_creep" "tdm_footstep_water_crouch_creep"

"snd_jump_liquid" "tdm_footstep_water_jump_land"


// Wood variations

"snd_footstep_wood_walk" "tdm_footstep_wood_walk"

"snd_footstep_wood_run" "tdm_footstep_wood_run"

"snd_footstep_wood_creep" "tdm_footstep_wood_walk_creep"

"snd_footstep_wood_crouch_walk" "tdm_footstep_wood_crouch_walk"

"snd_footstep_wood_crouch_run" "tdm_footstep_wood_crouch_run"

"snd_footstep_wood_crouch_creep" "tdm_footstep_wood_crouch_creep"

"snd_jump_wood" "tdm_footstep_wood_jump_land"


// Metal variations - we don't have move-type specific metal sounds right now

"snd_footstep_metal_walk" "tdm_footstep_metal_walk"

"snd_footstep_metal_run" "tdm_footstep_metal_run"

"snd_footstep_metal_creep" "tdm_footstep_metal_walk_creep"

"snd_footstep_metal_crouch_walk" "tdm_footstep_metal_crouch_walk"

"snd_footstep_metal_crouch_run" "tdm_footstep_metal_crouch_run"

"snd_footstep_metal_crouch_creep" "tdm_footstep_metal_crouch_creep"

"snd_jump_metal" "tdm_footstep_metal_jump_land"


// Don't have a full set of carpet yet

"snd_footstep_carpet" "tdm_footstep_carpet"

"snd_jump_carpet" "human_carpet_jump"



"snd_footstep_puddle" "movement_water"

"snd_footstep_wading" "movement_water"


// swim sound goes here

"snd_footstep_swim" "" // this doesn't appear to do anything? =Springheel


// default sounds


"snd_footstep_gravel" "human_gravel"

"snd_footstep_glass" "human_glass"

"snd_footstep_snow" "human_snow"

"snd_footstep_ice" "human_ice"

"snd_footstep_cloth" "human_carpet"

"snd_footstep_armor_leath" "human_carpet"

"snd_footstep_flesh" "human_mud"

"snd_footstep_moss" "human_carpet"

"snd_footstep_foliage" "tdm_footstep_foliage"

"snd_footstep_foliage_run" "human_foliage"


// there is no default for jump sounds, so all necessary materials need their own sound

"snd_jump_wading" "movement_water_jump"

"snd_jump_gravel" "human_gravel_jump"

"snd_jump_glass" "human_glass_jump"

"snd_jump_snow" "human_snow_jump"

"snd_jump_ice" "human_ice_jump"

"snd_jump_slate" "tdm_footstep_stone_jump_land"

"snd_jump_foliage" "human_foliage_jump"


"snd_jump_cloth" "human_carpet_jump"

"snd_jump_flesh" "human_carpet_jump"

"snd_jump_moss" "human_carpet_jump"




// default footstep for undefined materials

"snd_footstep" "tdm_footstep_stone_walk"



//these materials are outdated, but kept here in case older missions have unique materials that use them


"snd_footstep_mud" "human_mud"

"snd_footstep_twigs" "human_wood"

"snd_footstep_brokeglass" "human_brokeglass"

"snd_footstep_squeakboard" "human_squeakboard"



"snd_jump_mud" "human_mud_jump"

"snd_jump_cardboard" "human_carpet_jump"

"snd_jump_twigs" "human_wood_jump"

"snd_jump_brokeglass" "human_brokeglass_jump"


"snd_jump_squeakboard" "human_squeakboard_jump"


"editor_snd sprs_footstep" "Sound propagated to the AI the player makes a step on the specified surface. The optional number after the colon is a loudness modifier in DB."

"editor_snd sprs_jump" "Sound propagated to the AI the player jumps on the specified surface. The optional number after the colon is a loudness modifier in DB."


// propagated sounds (default for materials that are not in the following list, same as stone)

/*"sprS_footstep" "footstep_default_walk:-3.9"

"sprS_footstep_walk" "footstep_default_walk:-3.9"

"sprS_footstep_run" "footstep_default_run:0.9"

"sprS_footstep_creep" "footstep_default_creep:-12"

"sprS_footstep_crouch_walk" "footstep_default_walk:-9"

"sprS_footstep_crouch_run" "footstep_default_run:-7"

"sprS_footstep_crouch_creep" "footstep_default_creep:-15"

"sprS_jump" "footstep_default_jump:2.3"*/


//+++++++++++++++++++++++++++++++++++++++++++++++++++

// Surface specific volumes

//+++++++++++++++++++++++++++++++++++++++++++++++++++


// LOUDEST SURFACES


// metal surface

"sprS_footstep_metal" "footstep_default_walk:1.6"

"sprS_footstep_metal_walk" "footstep_default_walk:1.6"

"sprS_footstep_metal_run" "footstep_default_run:5.5"

"sprS_footstep_metal_creep" "footstep_default_creep:-7.9"

"sprS_footstep_metal_crouch_walk" "footstep_default_walk:-2.9"

"sprS_footstep_metal_crouch_run" "footstep_default_run:-1.5"

"sprS_footstep_metal_crouch_creep" "footstep_default_creep:-15"

"sprS_jump_metal" "footstep_default_jump:6.4"


// puddle

"sprS_footstep_puddle" "footstep_default_walk:2"

"sprS_footstep_puddle_walk" "footstep_default_walk:2"

"sprS_footstep_puddle_run" "footstep_default_run:5.5"

"sprS_footstep_puddle_creep" "footstep_default_creep:-2"

"sprS_footstep_puddle_crouch_walk" "footstep_default_walk:0"

"sprS_footstep_puddle_crouch_run" "footstep_default_run:0"

"sprS_footstep_puddle_crouch_creep" "footstep_default_creep:-9"

"sprS_jump_puddle" "footstep_default_jump:5.2"


// tile surface -

"sprS_footstep_tile" "footstep_default_walk:1.0"

"sprS_footstep_tile_walk" "footstep_default_walk:1.0"

"sprS_footstep_tile_run" "footstep_default_run:4.5"

"sprS_footstep_tile_creep" "footstep_default_creep:-8.5"

"sprS_footstep_tile_crouch_walk" "footstep_default_walk:-2.4"

"sprS_footstep_tile_crouch_run" "footstep_default_run:-2.5"

"sprS_footstep_tile_crouch_creep" "footstep_default_creep:-15"

"sprS_jump_tile" "footstep_default_jump:6.0"


// glass - same as tile

"sprS_footstep_glass" "footstep_default_walk:1.0"

"sprS_footstep_glass_walk" "footstep_default_walk:1.0"

"sprS_footstep_glass_run" "footstep_default_run:4.5"

"sprS_footstep_glass_creep" "footstep_default_creep:-8.5"

"sprS_footstep_glass_crouch_walk" "footstep_default_walk:-2.4"

"sprS_footstep_glass_crouch_run" "footstep_default_run:-2.5"

"sprS_footstep_glass_crouch_creep" "footstep_default_creep:-15"

"sprS_jump_glass" "footstep_default_jump:6.0"


// squeakboard - //not supported

"sprS_footstep_squeakboard" "footstep_default_walk:5.5"

"sprS_footstep_squeakboard_walk" "footstep_default_walk:5.5"

"sprS_footstep_squeakboard_run" "footstep_default_run:7.5"

"sprS_footstep_squeakboard_creep" "footstep_default_creep:-4.0"

"sprS_footstep_squeakboard_crouch_walk" "footstep_default_walk:-0.25"

"sprS_footstep_squeakboard_crouch_run" "footstep_default_run:1.5"

"sprS_footstep_squeakboard_crouch_creep" "footstep_default_creep:-13"

"sprS_jump_squeakboard" "footstep_default_jump:8.0"


// gravel

"sprS_footstep_gravel" "footstep_default_walk:1"

"sprS_footstep_gravel_walk" "footstep_default_walk:1"

"sprS_footstep_gravel_run" "footstep_default_run:2"

"sprS_footstep_gravel_creep" "footstep_default_creep:-5.7"

"sprS_footstep_gravel_crouch_walk" "footstep_default_walk:-2"

"sprS_footstep_gravel_crouch_run" "footstep_default_run:-4"

"sprS_footstep_gravel_crouch_creep" "footstep_default_creep:-10"

"sprS_jump_gravel" "footstep_default_jump:3.2"


// twigs

"sprS_footstep_twigs" "footstep_default_walk:2"

"sprS_footstep_twigs_walk" "footstep_default_walk:2"

"sprS_footstep_twigs_run" "footstep_default_run:3.8"

"sprS_footstep_twigs_creep" "footstep_default_creep:-5.7"

"sprS_footstep_twigs_crouch_walk" "footstep_default_walk:-2"

"sprS_footstep_twigs_crouch_run" "footstep_default_run:-3"

"sprS_footstep_twigs_crouch_creep" "footstep_default_creep:-9"

"sprS_jump_twigs" "footstep_default_jump:5.2"


// brokeglass - same as gravel

"sprS_footstep_brokeglass" "footstep_default_walk:1"

"sprS_footstep_brokeglass_walk" "footstep_default_walk:1"

"sprS_footstep_brokeglass_run" "footstep_default_run:2"

"sprS_footstep_brokeglass_creep" "footstep_default_creep:-5.7"

"sprS_footstep_brokeglass_crouch_walk" "footstep_default_walk:-2"

"sprS_footstep_brokeglass_crouch_run" "footstep_default_run:-4"

"sprS_footstep_brokeglass_crouch_creep" "footstep_default_creep:-10"

"sprS_jump_brokeglass" "footstep_default_jump:3.2"


// DEFAULT SURFACES


// wading

"sprS_footstep_wading" "footstep_default_walk:-3"

"sprS_footstep_wading_walk" "footstep_default_walk:-3"

"sprS_footstep_wading_run" "footstep_default_run:5"

"sprS_footstep_wading_creep" "footstep_default_creep:-9.5"

"sprS_footstep_wading_crouch_walk" "footstep_default_walk:-6"

"sprS_footstep_wading_crouch_run" "footstep_default_run:-8"

"sprS_footstep_wading_crouch_creep" "footstep_default_creep:-16"

"sprS_jump_wading" "footstep_default_jump:3.2"


// ice

"sprS_footstep_ice" "footstep_default_walk:-1.5"

"sprS_footstep_ice_walk" "footstep_default_walk:-1.5"

"sprS_footstep_ice_run" "footstep_default_run:-1.5"

"sprS_footstep_ice_creep" "footstep_default_creep:-10"

"sprS_footstep_ice_crouch_walk" "footstep_default_walk:-5.5"

"sprS_footstep_ice_crouch_run" "footstep_default_run:-8.5"

"sprS_footstep_ice_crouch_creep" "footstep_default_creep:-15"

"sprS_jump_ice" "footstep_default_jump:2.7"


// wood surface -- slightly louder than stone

"sprS_footstep_wood" "footstep_default_walk:-3.6"

"sprS_footstep_wood_walk" "footstep_default_walk:-3.6"

"sprS_footstep_wood_run" "footstep_default_run:1.2"

"sprS_footstep_wood_creep" "footstep_default_creep:-11.7"

"sprS_footstep_wood_crouch_walk" "footstep_default_walk:-7.7"

"sprS_footstep_wood_crouch_run" "footstep_default_run:-6.7"

"sprS_footstep_wood_crouch_creep" "footstep_default_creep:-15"

"sprS_jump_wood" "footstep_default_jump:2.3"


// stone surface

"sprS_footstep_stone" "footstep_default_walk:-3.9"

"sprS_footstep_stone_walk" "footstep_default_walk:-3.9"

"sprS_footstep_stone_run" "footstep_default_run:0.8"

"sprS_footstep_stone_creep" "footstep_default_creep:-12"

"sprS_footstep_stone_crouch_walk" "footstep_default_walk:-7.9"

"sprS_footstep_stone_crouch_run" "footstep_default_run:-7"

"sprS_footstep_stone_crouch_creep" "footstep_default_creep:-15"

"sprS_jump_stone" "footstep_default_jump:2"


// armor_plate - same as stone

"sprS_footstep_armor_plate" "footstep_default_walk:-3.9"

"sprS_footstep_armor_plate_walk" "footstep_default_walk:-3.9"

"sprS_footstep_armor_plate_run" "footstep_default_run:0.8"

"sprS_footstep_armor_plate_creep" "footstep_default_creep:-12"

"sprS_footstep_armor_plate_crouch_walk" "footstep_default_walk:-7.9"

"sprS_footstep_armor_plate_crouch_run" "footstep_default_run:-7"

"sprS_footstep_armor_plate_crouch_creep" "footstep_default_creep:-15"

"sprS_jump_armor_plate" "footstep_default_jump:2"




// foliage

"sprS_footstep_foliage" "footstep_default_walk:-3.3"

"sprS_footstep_foliage_walk" "footstep_default_walk:-3.3"

"sprS_footstep_foliage_run" "footstep_default_run:-1.5"

"sprS_footstep_foliage_creep" "footstep_default_creep:-9.3"

"sprS_footstep_foliage_crouch_walk" "footstep_default_walk:-4.3"

"sprS_footstep_foliage_crouch_run" "footstep_default_run:-8.5"

"sprS_footstep_foliage_crouch_creep" "footstep_default_creep:-13"

"sprS_jump_foliage" "footstep_default_jump:0.3"


// QUIET SURFACES


// snow

"sprS_footstep_snow" "footstep_default_walk:-6.3"

"sprS_footstep_snow_walk" "footstep_default_walk:-6.3"

"sprS_footstep_snow_run" "footstep_default_run:-4.5"

"sprS_footstep_snow_creep" "footstep_default_creep:-14"

"sprS_footstep_snow_crouch_walk" "footstep_default_walk:-9.3"

"sprS_footstep_snow_crouch_run" "footstep_default_run:-8.5"

"sprS_footstep_snow_crouch_creep" "footstep_default_creep:-16"

"sprS_jump_snow" "footstep_default_jump:-3.3"


// dirt

"sprS_footstep_dirt" "footstep_default_walk:-6.3"

"sprS_footstep_dirt_walk" "footstep_default_walk:-6.3"

"sprS_footstep_dirt_run" "footstep_default_run:-4.5"

"sprS_footstep_dirt_creep" "footstep_default_creep:-13.3"

"sprS_footstep_dirt_crouch_walk" "footstep_default_walk:-10.3"

"sprS_footstep_dirt_crouch_run" "footstep_default_run:-9"

"sprS_footstep_dirt_crouch_creep" "footstep_default_creep:-15"

"sprS_jump_dirt" "footstep_default_jump:-3.3"


// sand

"sprS_footstep_sand" "footstep_default_walk:-6.5"

"sprS_footstep_sand_walk" "footstep_default_walk:-6.5"

"sprS_footstep_sand_run" "footstep_default_run:-4.5"

"sprS_footstep_sand_creep" "footstep_default_creep:-15"

"sprS_footstep_sand_crouch_walk" "footstep_default_walk:-10.5"

"sprS_footstep_sand_crouch_run" "footstep_default_run:-8.5"

"sprS_footstep_sand_crouch_creep" "footstep_default_creep:-16"

"sprS_jump_sand" "footstep_default_jump:-4.5"


// straw

"sprS_footstep_straw" "footstep_default_walk:-6"

"sprS_footstep_straw_walk" "footstep_default_walk:-6"

"sprS_footstep_straw_run" "footstep_default_run:-5"

"sprS_footstep_straw_creep" "footstep_default_creep:-11"

"sprS_footstep_straw_crouch_walk" "footstep_default_walk:-10"

"sprS_footstep_straw_crouch_run" "footstep_default_run:-8.5"

"sprS_footstep_straw_crouch_creep" "footstep_default_creep:-15"

"sprS_jump_straw" "footstep_default_jump:-3.8"


// armor_chain

"sprS_footstep_armor_chain" "footstep_default_walk:-6.3"

"sprS_footstep_armor_chain_walk" "footstep_default_walk:-6.3"

"sprS_footstep_armor_chain_run" "footstep_default_run:-4.5"

"sprS_footstep_armor_chain_creep" "footstep_default_creep:-15"

"sprS_footstep_armor_chain_crouch_walk" "footstep_default_walk:-10.5"

"sprS_footstep_armor_chain_crouch_run" "footstep_default_run:-8.5"

"sprS_footstep_armor_chain_crouch_creep" "footstep_default_creep:-16"

"sprS_jump_armor_chain" "footstep_default_jump:-3.3"


// grass

"sprS_footstep_grass" "footstep_default_walk:-8.1"

"sprS_footstep_grass_walk" "footstep_default_walk:-8.1"

"sprS_footstep_grass_run" "footstep_default_run:-6"

"sprS_footstep_grass_creep" "footstep_default_creep:-16"

"sprS_footstep_grass_crouch_walk" "footstep_default_walk:-11.1"

"sprS_footstep_grass_crouch_run" "footstep_default_run:-10"

"sprS_footstep_grass_crouch_creep" "footstep_default_creep:-18"

"sprS_jump_grass" "footstep_default_jump:-3.8"


// mud -

"sprS_footstep_mud" "footstep_default_walk:-7.5"

"sprS_footstep_mud_walk" "footstep_default_walk:-7.5"

"sprS_footstep_mud_run" "footstep_default_run:-5"

"sprS_footstep_mud_creep" "footstep_default_creep:-15"

"sprS_footstep_mud_crouch_walk" "footstep_default_walk:-10.5"

"sprS_footstep_mud_crouch_run" "footstep_default_run:-9"

"sprS_footstep_mud_crouch_creep" "footstep_default_creep:-18"

"sprS_jump_mud" "footstep_default_jump:-3.8"


// carpet - very quiet

"sprS_footstep_carpet" "footstep_default_walk:-12"

"sprS_footstep_carpet_walk" "footstep_default_walk:-12"

"sprS_footstep_carpet_run" "footstep_default_run:-9"

"sprS_footstep_carpet_creep" "footstep_default_creep:-20"

"sprS_footstep_carpet_crouch_walk" "footstep_default_walk:-15"

"sprS_footstep_carpet_crouch_run" "footstep_default_run:-13"

"sprS_footstep_carpet_crouch_creep" "footstep_default_creep:-23"

"sprS_jump_carpet" "footstep_default_jump:-7.8"


// cloth - same as carpet

"sprS_footstep_cloth" "footstep_default_walk:-12"

"sprS_footstep_cloth_walk" "footstep_default_walk:-12"

"sprS_footstep_cloth_run" "footstep_default_run:-9"

"sprS_footstep_cloth_creep" "footstep_default_creep:-20"

"sprS_footstep_cloth_crouch_walk" "footstep_default_walk:-15"

"sprS_footstep_cloth_crouch_run" "footstep_default_run:-13"

"sprS_footstep_cloth_crouch_creep" "footstep_default_creep:-23"

"sprS_jump_cloth" "footstep_default_jump:-7.8"


// leather armor

"sprS_footstep_armor_leath" "footstep_default_walk:-12"

"sprS_footstep_armor_leath_walk" "footstep_default_walk:-12"

"sprS_footstep_armor_leath_run" "footstep_default_run:-9"

"sprS_footstep_armor_leath_creep" "footstep_default_creep:-18"

"sprS_footstep_armor_leath_crouch_walk" "footstep_default_walk:-15"

"sprS_footstep_armor_leath_crouch_run" "footstep_default_run:-13"

"sprS_footstep_armor_leath_crouch_creep" "footstep_default_creep:-20"

"sprS_jump_armor_leath" "footstep_default_jump:-7.8"


// flesh

"sprS_footstep_flesh" "footstep_default_walk:-12"

"sprS_footstep_flesh_walk" "footstep_default_walk:-12"

"sprS_footstep_flesh_run" "footstep_default_run:-9"

"sprS_footstep_flesh_creep" "footstep_default_creep:-18"

"sprS_footstep_flesh_crouch_walk" "footstep_default_walk:-15"

"sprS_footstep_flesh_crouch_run" "footstep_default_run:-13"

"sprS_footstep_flesh_crouch_creep" "footstep_default_creep:-20"

"sprS_jump_flesh" "footstep_default_jump:-7.8"


// paper - same as carpet

"sprS_footstep_paper" "footstep_default_walk:-12"

"sprS_footstep_paper_walk" "footstep_default_walk:-12"

"sprS_footstep_paper_run" "footstep_default_run:-9"

"sprS_footstep_paper_creep" "footstep_default_creep:-18"

"sprS_footstep_paper_crouch_walk" "footstep_default_walk:-15"

"sprS_footstep_paper_crouch_run" "footstep_default_run:-13"

"sprS_footstep_paper_crouch_creep" "footstep_default_creep:-20"

"sprS_jump_paper" "footstep_default_jump:-7.8"


// moss - quieter than carpet

"sprS_footstep_moss" "footstep_default_walk:-16"

"sprS_footstep_moss_walk" "footstep_default_walk:-16"

"sprS_footstep_moss_run" "footstep_default_run:-10"

"sprS_footstep_moss_creep" "footstep_default_creep:-21"

"sprS_footstep_moss_crouch_walk" "footstep_default_walk:-19"

"sprS_footstep_moss_crouch_run" "footstep_default_run:-14"

"sprS_footstep_moss_crouch_creep" "footstep_default_creep:-24"

"sprS_jump_moss" "footstep_default_jump:-8.8"


// grayman #3413 - swimming


"sprS_decompress" "decompress" // submerging

"sprS_recompress" "recompress" // surfacing


// water particles

"snd_water" "splash_long_01"

"smoke_water" "water_splash_large"


// The heal response

"sr_class_1" "R"

"sr_type_1" "STIM_HEALING"

"sr_state_1" "1"


// Effect: Heal the player

"sr_effect_1_1" "effect_heal"

"sr_effect_1_1_arg1" "_SELF"

"sr_effect_1_1_arg2" "heal_generic" // SND_CHANNEL_VOICE

"sr_effect_1_1_arg3" "snd_player_sigh" // the sound shader


// The damage response

"sr_class_2" "R"

"sr_type_2" "STIM_DAMAGE"

"sr_state_2" "1"

"sr_effect_2_1" "effect_damage"

"sr_effect_2_1_arg1" "_SELF"

"sr_effect_2_1_arg2" "atdm:damage_low"


// The "Thief" stim

"sr_class_3" "S"

"sr_type_3" "STIM_PLAYER"

"sr_state_3" "1"

"sr_radius_3" "350"

"sr_falloffexponent_3" "1"

"sr_magnitude_3" "1"

"sr_time_interval_3" "1500"


// The damage response

"sr_class_4" "R"

"sr_type_4" "STIM_DAMAGE"

"sr_state_4" "1"

"sr_effect_4_1" "effect_damage"

"sr_effect_4_1_arg1" "_SELF"

"sr_effect_4_1_arg2" "atdm:damage_low"

}


entityDef atdm:player_thief

{

"inherit" "atdm:player_base"

"model" "model_player_thief"

"ragdoll" "guard_base"


"mass" "70"


"editor_displayFolder" "Internal"


// replace with player entering/leaving water sounds (taking a deep breath / letting out maybe?)

//"snd_decompress" "splash_long_01"

"snd_decompress" "splash_subtle_01" // grayman #3413

"snd_recompress" "splash_subtle_01"

"snd_airless" "underwater"


"def_head" "atdm:ai_head_thief_player"

"head_joint" "Head"

"offsetHeadModel" "0 0 -7"



//"copy_joint neckcontrol" "neckcontrol"

//"copy_joint headcontrol" "headcontrol"

//"copy_joint_world eyecontrol" "eyecontrol"


// Player is always on team 0

"team" "0"

}




entityDef atdm:ai_head_thief_player

{

"inherit" "atdm:ai_head_base"

"model" "head_thief"


"scriptobject" "tdm_player_head"


// greebo: Add the GAS response to the thief's head, this will be

// targetted at the Thief entity itself as AF attachments redirect responses to their body

"sr_class_4" "R"

"sr_type_4" "STIM_GAS"

"sr_state_4" "1"


// Use a custom script function for the player's gas effect

"sr_script_STIM_GAS" "responseToGasStim"


// Effect: damage the player, additional to the response script

"sr_effect_4_1" "effect_damage"

"sr_effect_4_1_arg1" "_SELF"

"sr_effect_4_1_arg2" "atdm:damage_simple"

}


entityDef info_player_start

{

"spawnclass" "idPlayerStart"


"editor_color" "1 0 0"

"editor_mins" "-16 -16 0"

"editor_maxs" "16 16 64"

"editor_showangle" "1"


"editor_usage" "The spawning position for the player."

"editor_var skin" "Skin to use for player model."

}


// Used to teleport the player after a cinematic

entityDef info_player_teleport

{

"editor_color" "1 0.2 0.1"

"editor_mins" "-16 -16 0"

"editor_maxs" "16 16 64"

"editor_showangle" "1"


"editor_usage" "Spawning position player after cinematic. When triggered, player will be moved to this location."

"editor_float push" "How much of a push to give to the player when he is teleported."

"editor_var visualView" "Camera to set player's view to when he is teleported."

"editor_float visualEffect" "How long to show the view from the visualView."


"spawnclass" "idPlayerStart"


"push" "300"

"visualEffect" "0"

"visualView" ""

}



tdm_weapon_arrow.def I modified the damage so that both the ai and I kill each other with one arrow, but this can be abused to make the game far too easy. "inherit" "atdm:damage_base"

"damage" "9999"


/***********************************************************************



This entityDef contains all the things common between all arrows.

There are many things here left un-implemented that must be

implemented in the actual arrow.


***********************************************************************/


// Base class for all arrow weapons

entityDef atdm:weapon_arrow_base

{

"inherit" "atdm:weapon_base"


"editor_usage" "Generic arrow weapon - do not use. Other arrow weapons inherit from this."

"editor_displayFolder" "Internal/Weapons"


"editor_snd snd_arrow_draw" "Sound to play when the arrow is drawn back before firing."

"editor_snd snd_bow_unsheath" "Sound to play when the bow is getting ready."

"editor_snd snd_bow_sheath" "Sound to play when the bow is put away."

"editor_snd snd_equip" "Sound to play when an arrow is nocked."


"model_view" "viewmodel_arrow" // Override this value in your implementation if you want a different look

"anim_rate_attack_start" ".7" //slows animation slightly so player can't quickfire


"inv_lgmodifier" "0" // Base amount of increase in lightgem brightness when equipped


"ammo_required" "1" // Can't select this weapon unless you have ammo for it


"weapon_scriptobject" "weapon_arrow"


// arrow to attach in firing animation. Change this for derived classes.

"def_attach" ""


// Bow aimer attachment

"def_aimer" "atdm:attachment_aimer"


"snd_arrow_draw" "bow_draw"

"snd_bow_unsheath" "bow_unsheath"

"snd_bow_sheath" "bow_sheath"

"snd_equip" "arrow_equip"

}


// Base class for aimer

entityDef atdm:attachment_aimer

{

"inherit" "atdm:entity_base"

"joint" "bowbone"


"editor_displayFolder" "Internal/Weapons/Attachements"


"model" "models/darkmod/player_equipment/bowaimer_01.lwo"


"spawnclass" "idStaticEntity"

"noclipmodel" "1"

"no_frob_box" "1"


"frobable" "0"

"angles" "0 90 0"

"origin" "2 0.74 0.2"

"noshadows" "1"

}



model viewmodel_arrow

{

mesh models/md5/weapons/shortbow/shortbow.md5mesh

//offset ( 6 3 -3 )

offset ( -10 0 -6.5 )


anim raise models/md5/weapons/shortbow/get.md5anim {

frame 1 sound_weapon snd_bow_unsheath

}

anim idle models/md5/weapons/shortbow/idle.md5anim {

frame 1 object_call ArrowVisible

}

anim lower models/md5/weapons/shortbow/putaway.md5anim

{

frame 5 sound_weapon snd_bow_sheath

}

anim attack_start models/md5/weapons/shortbow/drawback.md5anim

{

frame 22 sound_weapon snd_arrow_draw

}

anim attack models/md5/weapons/shortbow/fire.md5anim

{

frame 1 object_call ArrowVisible

frame 1 sound shortbow_fire

frame 2 object_call ArrowInvisible


}

anim tired models/md5/weapons/shortbow/tired.md5anim {

frame 1 object_call ArrowVisible

frame 14 object_call ArrowInvisible

}

anim cancel models/md5/weapons/shortbow/cancel.md5anim {

frame 1 object_call ArrowVisible

frame 14 object_call ArrowInvisible

}

}


entityDef atdm:projectile_arrow

{

"inherit" "atdm:projectile_base"


// Crispy: Arrows in flight shouldn't raise visual alerts

"AIUse" ""


"editor_usage" "Base class for all arrow projectiles"

"spawnclass" "idProjectile"

"mins" "-1 -1 -2"

"maxs" "1 1 0"

"cone" "1"


"def_damage" "atdm:damage_arrow"

"has_result" "0"


"axial_dir" "0 0 1"


"launchFromBarrel" "1"


// greebo: Fire this projectile along the player's forward direction

"fire_along_playerview" "1"


"health" "5" // amount of damage projectile can take if damaged (0 means it can't be destroyed)

"broken" "" // no default broken model, the broken pieces are spawned on impact

"velocity" "1800 0 0"

"angular_velocity" "-299 0 0" // how the projectile is rotating when it leaves the gun


"thrust" "0" // the rate of acceleration (always in the direction of the projectiles model)

"thrust_start" "0" // when to start accelerating

"thrust_end" "0" // when to stop accelerating


"linear_friction" "1.3"

"angular_friction" "0.01"

"contact_friction" "0"


"bounce" "0" // how much speed a projectile retains when it bounces off of objects (coefficient of restitution). 0 means no bounce.

"mass" "5"

"gravity" "532" // how much gravity affects the trajectory. gravity direction is same as the entity that fired it.

"fuse" "999" // how long before the projectile is removed or self-detonates. Use 0 for beam weapons (velocity == distance).


"detonate_on_fuse" "0" // whether projectile should detonate when it's fuse runs out

"detonate_on_death" "0" // whether projectile should detonate when it's "killed" (health runs out)

"detonate_on_world" "1" // whether projectile should detonate when it hits an obstacle

"detonate_on_actor" "1" // whether projectile should detonate when it hits a character in the game

"detonate_on_water" "0" // whether projectile should detonate when it hits a water surface

"impact_damage_effect" "1" // whether projectile causes blood splats from characters that bleed

"impact_gib" "0" // whether projectile can gib a character or not (for example: bullets don't gib, but rockets do)


// will be overloaded by firearrow, but should work for other arrows


"snd_fly" "arrow_flight" //needs to be a looping sound


"snd_water" "arrow_water_impact" // sound played when arrow hits water


// bind arrow to object when it collides


"bindOnImpact" "0"


// Stim that triggers visual recognition of this as an out of place object when seen

"sr_class_1" "S"

"sr_type_1" "STIM_VISUAL"

"sr_state_1" "1"

"sr_radius_1" "500"

"sr_time_interval_1" "500" // half second

}


entityDef atdm:damage_arrow

{

"inherit" "atdm:damage_base"

"damage" "9999"

"kickDir" "1 0 0"


//Baddcog : lowered push from 200, seemed a little strong since other arrows don't push

"push" "100"


"mtr_blob" "genericDamage"

"blob_time" "300"

"blob_size" "400"

"blob_offset_x" "400"


"knockback" "10"

"kick_time" "400"

"kick_amplitude" "1"


"dv_time" "100"

"mtr_wound_flesh" "textures/decals/hurt_small"

"mtr_wound_cloth" "textures/decals/hurt_small"

"mtr_splat_flesh" "textures/decals/hurt_small"


// grayman #3386 - need these to drop blood markers


"mtr_killed_splat1" "textures/darkmod/decals/blood/blood01"

"mtr_killed_splat2" "textures/darkmod/decals/blood/blood02"

"mtr_killed_splat3" "textures/darkmod/decals/blood/blood03"

"mtr_killed_splat4" "textures/darkmod/decals/blood/blood04"

"mtr_killed_splat5" "textures/darkmod/decals/blood/blood05"

"mtr_killed_splat6" "textures/darkmod/decals/blood/blood06"

"mtr_killed_splat7" "textures/darkmod/decals/blood/blood07"

"mtr_killed_splat8" "textures/darkmod/decals/blood/blood08"

"mtr_killed_splat9" "textures/darkmod/decals/blood/blood09"

}


// Projectile result:

entityDef atdm:result_arrow_base

{

"inherit" "atdm:entity_base"

"spawnclass" "CProjectileResult"

"scriptobject" "result_arrow_base"


"editor_displayFolder" "Internal/Weapons/Projectiles/Results"

"editor_usage" "The result of an projectile"


"AIUse" "AIUSE_SUSPICIOUS" // grayman #1327


"copy_bind" "0"

"remove_delay" "120"


// Stim that triggers visual recognition of this as an out of place object when seen

"sr_class_1" "S"

"sr_type_1" "STIM_VISUAL"

"sr_state_1" "1"

"sr_radius_1" "500"

"sr_time_interval_1" "500" // half second

}



tdm_weapon_shortsword.def I adjusted the damage of the shortsword so I could kill anything in one hit, but this does make enemies that are supposed to be very powerful like Alberic; not so scary anymore; "inherit" "atdm:melee_base"

"damage" "9999"


You can also adjust how much damage is dealt to different kinds of armors. I since sword would still deal blunt force trauma, I made it so plate armor doesn't stop all damage: "damage_mult_flesh" "1.0"

"damage_mult_undeadflesh" "1.0" // Sword damage multiplier for player attacking zombies

"damage_mult_undeadbone" "1.0" // Sword damage multiplier for player attacking skeletons

"damage_mult_cloth" "1.0"

"damage_mult_armor_leath" "1.0"

"damage_mult_armor_chain" "1.0"

"damage_mult_armor_plate" "0.25"


// vim:ts=4:sw=4:cindent


//

// ======================== Shortsword ==================================

//


entityDef atdm:weapon_shortsword

{

"inherit" "atdm:weapon_base"


"editor_usage" "The Shortsword"

"editor_displayFolder" "Weapons/Melee"


"model_view" "viewmodel_shortsword"


// a unique weapon name, used by ammunition entities

"inv_weapon_name" "shortsword"


// The display name of this weapon (for the HUD)

"inv_name" "#str_02429" // Shortsword

"inv_icon" "guis/assets/hud/weapon_icons/shortsword_icon"


"model" "models/darkmod/weapons/shortsword.lwo"

"spawnclass" "idMoveable"

"frobable" "1"


"is_weapon_melee" "1"


// add 3 levels to the lightgem when this weapon is drawn

"inv_lgmodifier" "0"


"ammo_required" "0" // doesn't need no ammo


"weapon_scriptobject" "weapon_shortsword"


"def_melee" "melee_shortsword_rl"


// Attachment entity for melee combat

"def_attach1" "atdm:attachment_melee_shortsword"

"name_attach1" "meleeweap_r"


"impact_damage_effect" "1"


// Always play a swing sound when we swing, regardless of hit or not later

"snd_acquire" "tool_pickup"

"snd_swing" "sword_swing"


"skin_invisible" "skins/shortsword_invis"


// animation rates for adjusting melee parries

// may run into problems (aliasing, etc) if rate goes too high


"anim_rate_parry_LR" "2.5"

"anim_rate_parry_RL" "2.5"

"anim_rate_parry_Over" "2.4"

"anim_rate_parry_Thrust" "2.5"


"anim_rate_attack_LR" "1.3"

"anim_rate_attack_RL" "1.3"

"anim_rate_attack_Over" "1.3"

"anim_rate_attack_Thrust" "1.3"


"anim_rate_cancel_attack_LR" "1.15"

"anim_rate_cancel_attack_RL" "1.15"

"anim_rate_cancel_attack_Over" "1.15"

"anim_rate_cancel_attack_Thrust" "1.15"


"anim_rate_raise" "1.5"

}


// right to left slash hit damage, particle FX, etc.

entityDef melee_shortsword_rl

{

"inherit" "atdm:melee_base"

"damage" "9999"

"kickDir" "0 1 0"


"impact_damage_effect" "1"

"mtr_blob" "genericDamage"

"blob_time" "300"

"blob_size" "400"

"blob_offset_x" "400"


"knockback" "10"

"push" "3200"


"gib" "0"


"damage_mult_flesh" "1.0"

"damage_mult_undeadflesh" "1.0" // Sword damage multiplier for player attacking zombies

"damage_mult_undeadbone" "1.0" // Sword damage multiplier for player attacking skeletons

"damage_mult_cloth" "1.0"

"damage_mult_armor_leath" "1.0"

"damage_mult_armor_chain" "1.0"

"damage_mult_armor_plate" "0.25"


"smoke_wound_flesh" "burstysquirt.prt"

"smoke_wound_cloth" "burstysquirt.prt"

"smoke_wound_armor_leather" "burstysquirt.prt"


// these aren't strictly necessary, but maybe

// someone wants to make weak plate mail you can hit thru

// or a metal robot that bleeds oil or something

// for now, they just do sparks

"smoke_wound_armor_plate" "chainsawstrike.prt"

"smoke_wound_metal" "chainsawstrike.prt"

"mtr_wound_flesh" "textures/decals/hurt02"

"mtr_wound_cloth" "textures/decals/hurt02"

"mtr_wound_armor_leath" "textures/decals/hurt02"

"mtr_wound_straw" "textures/decals/hurt02"



"mtr_killed_splat1" "textures/darkmod/decals/blood/blood01"

"mtr_killed_splat2" "textures/darkmod/decals/blood/blood02"

"mtr_killed_splat3" "textures/darkmod/decals/blood/blood03"

"mtr_killed_splat4" "textures/darkmod/decals/blood/blood04"

"mtr_killed_splat5" "textures/darkmod/decals/blood/blood05"

"mtr_killed_splat6" "textures/darkmod/decals/blood/blood06"

"mtr_killed_splat7" "textures/darkmod/decals/blood/blood07"

"mtr_killed_splat8" "textures/darkmod/decals/blood/blood08"

"mtr_killed_splat9" "textures/darkmod/decals/blood/blood09"



// particle FX when we hit non-bleeders

"smoke_strike_metal" "chainsawstrike.prt"

"smoke_strike_armor_plate" "chainsawstrike.prt"


// chance of getting a spark when we strike metal

"smoke_chance_metal" "0.4"

"smoke_chance_armor_plate" "0.5"



// decals when hitting non bleeders:

// Don't currently have any, would use mtr_strike_*


"kick_time" "400"

"kick_amplitude" "1"


"dv_time" "100"


// default surface type if we cannot detect surface type hit

"default_surface_inanimate" "metal"

"default_surface_actor" "flesh"


// default sound to play if all else goes wrong

"snd_hit" "weapon_hit_default"


"snd_metal" "sword_hit_metal"

"snd_ricochet" "sword_hit_wood"

"snd_flesh" "sword_hit_flesh"

"snd_undeadflesh" "sword_hit_chain"

"snd_stone" "sword_hit_metal"

"snd_wood" "sword_hit_wood"

"snd_cardboard" "blackjack_hit_wood"

"snd_glass" "sword_hit_wood"

"snd_liquid" "melee_hit_water"

"snd_plastic" "sword_hit_wood"

"snd_armor_plate" "sword_hit_armor_plate"


"snd_armor_chain" "sword_hit_chain"


"snd_armor_leath" "sword_hit_chain"

"snd_cloth" "sword_hit_flesh"


// Propagated sounds for hitting objects other than flesh

"sprS_metal" "sword_hit_hard"

"sprS_armor_plate" "sword_hit_hard"

"sprS_ricochet" "sword_hit_hard"

"sprS_stone" "sword_hit_hard"

"sprS_wood" "sword_hit_hard"

"sprS_glass" "sword_hit_hard"

"sprS_flesh" "sword_hit_flesh"

"sprS_cloth" "sword_hit_flesh"

"sprS_armor_chain" "sword_hit_flesh"

"sprS_armor_leath" "sword_hit_flesh"

}


entityDef melee_shortsword_lr

{

"inherit" "melee_shortsword_rl"

"kickDir" "0 -1 0"

}


entityDef melee_shortsword_ovr

{

"inherit" "melee_shortsword_rl"

"kickDir" "0 0 -1"

}


entityDef melee_shortsword_thrust

{

"inherit" "melee_shortsword_rl"

"kickDir" "-1 0 0"

}


model viewmodel_shortsword

{

mesh models/md5/weapons/broadsword/broadsword.md5mesh

offset (-10 0 -6.5 )


anim raise models/md5/weapons/broadsword/get.md5anim {

frame 1 sound_weapon sword_unsheath

}

anim idle models/md5/weapons/broadsword/idle.md5anim


anim attack_LR models/md5/weapons/broadsword/slash_l2r.md5anim

{

frame 11 melee_hold

frame 12 sound snd_swing

frame 12 melee_attack_start meleeweap_r slash_lr

frame 20 melee_attack_stop meleeweap_r

}

anim attack_RL models/md5/weapons/broadsword/slash_r2l.md5anim

{

frame 11 melee_hold

frame 12 sound snd_swing

frame 12 melee_attack_start meleeweap_r slash_rl

frame 20 melee_attack_stop meleeweap_r

}

anim attack_Over models/md5/weapons/broadsword/slash_overhead.md5anim

{

frame 11 melee_hold

frame 12 sound snd_swing

frame 12 melee_attack_start meleeweap_r overhead

frame 21 melee_attack_stop meleeweap_r

}

anim attack_Thrust models/md5/weapons/broadsword/thrust.md5anim

{

frame 11 melee_hold

frame 12 sound snd_swing

frame 12 melee_attack_start meleeweap_r thrust

frame 21 melee_attack_stop meleeweap_r

}

anim parry_RL models/md5/weapons/broadsword/parry_right2left.md5anim

{

frame 8 melee_parry_start meleeweap_r left

frame 10 melee_hold

frame 11 melee_parry_stop meleeweap_r

}

anim parry_LR models/md5/weapons/broadsword/parry_left2right.md5anim

{

frame 8 melee_parry_start meleeweap_r right

frame 10 melee_hold

frame 11 melee_parry_stop meleeweap_r

}

anim parry_Over models/md5/weapons/broadsword/parry_right.md5anim

{

frame 10 melee_parry_start meleeweap_r overhead

frame 12 melee_hold

frame 13 melee_parry_stop meleeweap_r

}

anim parry_Thrust models/md5/weapons/broadsword/parry_thrust.md5anim

{

// not the correct frame, just needed a pause for testing

frame 8 melee_parry_start meleeweap_r thrust

frame 10 melee_hold

frame 11 melee_parry_stop meleeweap_r

}

anim cancel_attack_RL models/md5/weapons/broadsword/cancel_r2l_attack.md5anim

{

frame 1 melee_attack_stop meleeweap_r

}

anim cancel_attack_LR models/md5/weapons/broadsword/cancel_l2r_attack.md5anim

{

frame 1 melee_attack_stop meleeweap_r

}

anim cancel_attack_Over models/md5/weapons/broadsword/cancel_overhead_attack.md5anim

{

frame 1 melee_attack_stop meleeweap_r

}

anim cancel_attack_Thrust models/md5/weapons/broadsword/cancel_thrust_attack.md5anim

{

frame 1 melee_attack_stop meleeweap_r

}

anim putaway models/md5/weapons/broadsword/putaway.md5anim

{

frame 17 sound_weapon sword_sheath

}

}


// new melee system

entityDef atdm:attachment_melee_shortsword

{

"inherit" "atdm:moveable_shortsword"

"spawnclass" "CMeleeWeapon"

// "joint" "r_wrist"

"joint" "sword"

// ? roll/yaw pitch


"angles" "0 -68 3"

"origin" "-2 -1 -1"


"hide" "1"

"solid" "0"

// necessary?

"clipmodel_contents" "0"

"frobable" "0"

"neverShow" "1" // grayman #2998 - never show this entity

"noshadows" "1" // grayman #2998


// if we hit a moveable below this mass, we continue the swing

"stop_mass" "8"


// attacks:


"att_type_overhead" "0" // overhead

"att_world_collide_overhead" "1"

"def_damage_overhead" "melee_shortsword_ovr"

"att_mod_cm_overhead" "1"

"att_cm_maxs_overhead" "1 45 1"

"att_cm_mins_overhead" "-1 6 -1"


"att_type_slash_lr" "1" // left to right

"att_world_collide_slash_lr" "1"

"def_damage_slash_lr" "melee_shortsword_lr"

"att_mod_cm_slash_lr" "1"

"att_cm_maxs_slash_lr" "1 45 1"

"att_cm_mins_slash_lr" "-1 6 -1"


"att_type_slash_rl" "2" // right to left

"att_world_collide_slash_rl" "1"

"def_damage_slash_rl" "melee_shortsword_rl"

"att_mod_cm_slash_rl" "1"

"att_cm_maxs_slash_rl" "1 45 1"

"att_cm_mins_slash_rl" "-1 6 -1"


"att_type_thrust" "3" // thrust

"att_world_collide_thrust" "1"

"def_damage_thrust" "melee_shortsword_thrust"

"att_mod_cm_thrust" "1"


// "att_cm_maxs_thrust" "1 42 1"

// "att_cm_mins_thrust" "-1 32 -1"

// ishtvan: Lined thrust up vertically with extended tip

"att_cm_maxs_thrust" "-1 42 -2"

"att_cm_mins_thrust" "-3 32 -4"


// Failsafe trace along long axis of CM

// for fixing buggy trace when CM starts out intersecting

"att_failsafe_trace_thrust" "1"

// player can lean, putting sword hilt thru walls

// so make sure trace starts back farther

"att_failsafe_trace_start_thrust" "0 -20 0"

"att_failsafe_trace_end_thrust" "0 42 0"


// parries:


"par_type_overhead" "0" // overhead

"par_mod_cm_overhead" "1"

"par_cm_maxs_overhead" "20 40 20"

"par_cm_mins_overhead" "-20 0 -20"


"par_type_left" "2" // left parry blocks right to left

"par_mod_cm_left" "1"

"par_cm_maxs_left" "20 40 20"

"par_cm_mins_left" "-20 -35 -20"


"par_type_right" "1" // right parry blocks left to right

"par_mod_cm_right" "1"

"par_cm_maxs_right" "20 40 20"

"par_cm_mins_right" "-20 -35 -20"


"par_type_thrust" "3" // thrust

"par_mod_cm_thrust" "1"

// works (sort of)

// right/left, forward/back, u/down

// always parries builder guard, but not pro guard

"par_cm_maxs_thrust" "25 50 75"

"par_cm_mins_thrust" "-60 -50 -40"


// sort of works for new skeleton, but not for old

// "par_cm_maxs_thrust" "35 53 250"

// "par_cm_mins_thrust" "-200 -50 -140"

// test:

"par_cm_yaw_only_thrust" "1"

}


  • Like 1
Link to comment
Share on other sites

You could put the text in a Google doc then just post the links to it here.

 

My FM Patently Dangerous has a show down with the main bad guy in it. I wouldn't call it a boss battle per se, but it feels good to fight him.

What do you see when you turn out the light? I can't tell you but I know that it's mine.

Link to comment
Share on other sites

Sirgen - thanks a lot man, to tell you the truth, I hadnt played with tdm's def files at the time i was editting stuff, so I missed all those files but i now see they are well commented, and your experiments with tweaking might just make for a good inspiration for a branch research into improving all the melee stats for experienced players. It would be a cool project to undertake, but I'll be damned if i have time for any hobbies these days. Lets see. Either way, thanks a lot for sharing your findings here!

 

And I strongly recommend playing Demagoge's mission, for sure.

Link to comment
Share on other sites

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.   Paste as plain text instead

  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.


  • Recent Status Updates

    • Petike the Taffer

      I've finally managed to log in to The Dark Mod Wiki. I'm back in the saddle and before the holidays start in full, I'll be adding a few new FM articles and doing other updates. Written in Stone is already done.
      · 0 replies
    • nbohr1more

      TDM 15th Anniversary Contest is now active! Please declare your participation: https://forums.thedarkmod.com/index.php?/topic/22413-the-dark-mod-15th-anniversary-contest-entry-thread/
       
      · 0 replies
    • JackFarmer

      @TheUnbeholden
      You cannot receive PMs. Could you please be so kind and check your mailbox if it is full (or maybe you switched off the function)?
      · 1 reply
    • OrbWeaver

      I like the new frob highlight but it would nice if it was less "flickery" while moving over objects (especially barred metal doors).
      · 4 replies
    • nbohr1more

      Please vote in the 15th Anniversary Contest Theme Poll
       
      · 0 replies
×
×
  • Create New...