Hey zappa, I loaded the game each time I created a new line.
I don't know what else to do, this is as far as I could go without crashing the game.
As it stands the game recognizes the weapon in the slot, it fires, reloads, etc. but has no fps animations whatsoever.
The lines that created the "possible infinite state loop" have the "//"
Mike_torso.st
Code:
// ======================================================= //
// Action state machine for Mike Powell, the hero of MoH PC //
// ======================================================= //
// Authored by Carl glave and Michael Boon, 5-23-2000
// The action state machine takes care of
// a) all torso-only animations which are layer on top of leg animations
// b) most full-body animations
// c) which states are to take their full-body animations from the leg state
// machine.
// The states which control only torso animations have "movetype legs" and
// animations under the token "action". This allows the leg state to continue
// controlling the leg animations. The states which control the whole body have
// movetype not legs and animations under the token "action". This overrides the
// leg state machine. States such as STAND, below, which have "none" specified
// as the torso animation, take the torso animation from the leg animaiton
// specified in the legs state machine.
//==============================================================================
//==============================================================================
//
// Stand (really means not doing an action)
//
//==============================================================================
state STAND
{
movetype legs
camera behind
entrycommands
{
viewmodelanim idle
}
action
{
none : default // no torso animation
}
states
{
KILLED : KILLED
PAIN : PAIN
VEHICLE_START : IS_USING_VEHICLE
TURRET_START : IS_USING_TURRET
// if we're on a ladder, make sure we're climbing the ladder
LADDER_IDLE_LEFT : ON_LADDER
// Some grab and hang stuff will be implemented in the final game, probably
// not all of this, but it's in here as a placeholder.
// CLIMB_LADDER : ONGROUND +FORWARD !BACKWARD AT_LADDER
// CLIMB_LADDER_IMPACT : !ONGROUND FORWARD !BACKWARD AT_LADDER // For grabbing onto walls when
// flying through the air
// Using objects is dictated by the object being used. The three objects
// here are for objects which trigger interactive actions when touched,
// for objects which the player uses (such as doors), and for when the
// player tries to use an object that is not usable.
// USE_USEANIM : ONGROUND TOUCHEDUSEANIM
// USE_USEANIM : ONGROUND USE AT_USEANIM
USE_LADDER : ONGROUND +USE AT_LADDER CHECK_HEIGHT "stand"
// USE_LADDER : ONGROUND AT_LADDER // this is full auto use of ladders
// latch onto ladder in mid-air
USE_LADDER : +USE AT_LADDER CHECK_HEIGHT "stand" // can also latch onto a ladder in mid-air
// auto use of ladder when at the bottom (AT_LADDER check is last because it does a trace)
USE_LADDER : ONGROUND FORWARD LOOKING_UP "35" !PUTAWAYMAIN !NEW_WEAPON !RELOAD !ATTACK_PRIMARY !ATTACK_SECONDARY AT_LADDER CHECK_HEIGHT "stand"
// auto use of ladder when at the top (AT_LADDER check is last because it does a trace)
USE_LADDER : ONGROUND FORWARD !LOOKING_UP "-35" !PUTAWAYMAIN !NEW_WEAPON !RELOAD !ATTACK_PRIMARY !ATTACK_SECONDARY AT_LADDER CHECK_HEIGHT "stand"
// GENERIC_USE : ONGROUND +USE
// This is not functional for the prototype, but is here as a placeholder for
// future functionality.
// While the player can only fire weapons with his right hand, he can switch them
// to his left if he wants to use an item with his left. Gameplay-wise, this should
// be the same as putting the weapon away, but it will create a nice graphical "cool
// factor" which is always good in computer games.
// When we have two items out, the game code will flag them both as putaway, and we
// need to put the right one away first, followed by the left.
PUTAWAY_MAIN : PUTAWAYMAIN // Basic put weapon away move.
RAISE_WEAPON : NEW_WEAPON
RELOAD_WEAPON : RELOAD
CHECK_PRIMARY_ATTACK_SEMIAUTO : +ATTACK_PRIMARY IS_WEAPON_SEMIAUTO "mainhand" IS_WEAPON_READY_TO_FIRE "mainhand"
CHECK_PRIMARY_ATTACK_FULLAUTO : ATTACK_PRIMARY !IS_WEAPON_SEMIAUTO "mainhand" IS_WEAPON_READY_TO_FIRE "mainhand"
CHECK_SECONDARY_ATTACK : +ATTACK_SECONDARY
}
}
//==============================================================================
//==============================================================================
//
// Primary Attacks - Full Auto
//
//==============================================================================
state CHECK_PRIMARY_ATTACK_FULLAUTO
{
movetype legs
action
{
none : default // stop torso animation
}
states
{
STAND : KILLED
// PAIN : PAIN
STAND : NEW_WEAPON
STAND : RELOAD
STAND : !IS_WEAPON_READY_TO_FIRE "mainhand"
// ATTACK_PISTOL_PRIMARY : IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "pistol"
// ATTACK_RIFLE_PRIMARY : IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "rifle"
// CHARGE_ATTACK_GRENADE : IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "grenade"
ATTACK_SMG_PRIMARY : IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "smg"
ATTACK_SMG_PRIMARY : IS_WEAPON_READY_TO_FIRE "mainhand" "Moschetto"
ATTACK_MG_PRIMARY : IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "mg"
// ATTACK_ITEM_PRIMARY : IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "item"
// STAND : IS_WEAPON_ACTIVE "Error" // Generates an error if no appropriate
// attack state is chosen
STAND : !ATTACK_PRIMARY
}
}
state ATTACK_SMG_PRIMARY
{
movetype legs
entrycommands
{
viewmodelanim fire 1
}
action
{
mp40_stand_run_fire : IS_WEAPON_ACTIVE "mainhand" "MP40" POSITION_TYPE "standing" MOVEMENT_TYPE "running"
mp40_crouch_run_fire : IS_WEAPON_ACTIVE "mainhand" "MP40" POSITION_TYPE "crouching" MOVEMENT_TYPE "running"
mp40_crouch_fire : IS_WEAPON_ACTIVE "mainhand" "MP40" POSITION_TYPE "crouching"
mp40_stand_fire : IS_WEAPON_ACTIVE "mainhand" "MP40"
// moschetto_stand_run_fire : IS_WEAPON_ACTIVE "mainhand" "Moschetto" POSITION_TYPE "standing" MOVEMENT_TYPE "running"
// moschetto_crouch_run_fire : IS_WEAPON_ACTIVE "mainhand" "Moschetto" POSITION_TYPE "crouching" MOVEMENT_TYPE "running"
// moschetto_crouch_fire : IS_WEAPON_ACTIVE "mainhand" "Moschetto" POSITION_TYPE "crouching"
// moschetto_stand_fire : IS_WEAPON_ACTIVE "mainhand" "Moschetto"
smg_stand_run_fire : POSITION_TYPE "standing" MOVEMENT_TYPE "running"
smg_crouch_run_fire : POSITION_TYPE "crouching" MOVEMENT_TYPE "running"
smg_crouch_fire : POSITION_TYPE "crouching"
smg_stand_fire : default
}
states
{
STAND : KILLED
// PAIN : PAIN
STAND : !ATTACK_PRIMARY ANIMDONE_TORSO
STAND : ANIMDONE_TORSO !IS_WEAPON_READY_TO_FIRE "mainhand"
// STAND : RELOAD !ATTACK_PRIMARY IS_WEAPON_READY_TO_FIRE "mainhand"
STAND : RELOAD !ATTACK_PRIMARY
// STAND : RELOAD !HAS_AMMO_IN_CLIP "mainhand" IS_WEAPON_READY_TO_FIRE "mainhand"
CHECK_PRIMARY_ATTACK_FULLAUTO : ATTACK_PRIMARY +IS_WEAPON_READY_TO_FIRE "mainhand"
CHECK_PRIMARY_ATTACK_FULLAUTO : +ATTACK_PRIMARY IS_WEAPON_READY_TO_FIRE "mainhand"
}
}
state ATTACK_MG_PRIMARY
{
movetype legs
entrycommands
{
viewmodelanim fire 1
}
action
{
mp44_stand_run_fire : IS_WEAPON_ACTIVE "mainhand" "StG 44" POSITION_TYPE "standing" MOVEMENT_TYPE "running"
mp44_crouch_run_fire : IS_WEAPON_ACTIVE "mainhand" "StG 44" POSITION_TYPE "crouching" MOVEMENT_TYPE "running"
mp44_crouch_fire : IS_WEAPON_ACTIVE "mainhand" "StG 44" POSITION_TYPE "crouching"
mp44_stand_fire : IS_WEAPON_ACTIVE "mainhand" "StG 44"
mg_stand_run_fire : POSITION_TYPE "standing" MOVEMENT_TYPE "running"
mg_crouch_run_fire : POSITION_TYPE "crouching" MOVEMENT_TYPE "running"
mg_crouch_fire : POSITION_TYPE "crouching"
mg_stand_fire : default
}
states
{
STAND : KILLED
// PAIN : PAIN
// STAND : !ATTACK_PRIMARY ANIMDONE_TORSO
// STAND : RELOAD !ATTACK_PRIMARY IS_WEAPON_READY_TO_FIRE "mainhand"
STAND : !ATTACK_PRIMARY ANIMDONE_TORSO
STAND : ANIMDONE_TORSO !IS_WEAPON_READY_TO_FIRE "mainhand"
// STAND : RELOAD !ATTACK_PRIMARY IS_WEAPON_READY_TO_FIRE "mainhand"
STAND : RELOAD !ATTACK_PRIMARY
// STAND : RELOAD !HAS_AMMO_IN_CLIP "mainhand" IS_WEAPON_READY_TO_FIRE "mainhand"
CHECK_PRIMARY_ATTACK_FULLAUTO : ATTACK_PRIMARY +IS_WEAPON_READY_TO_FIRE "mainhand"
CHECK_PRIMARY_ATTACK_FULLAUTO : +ATTACK_PRIMARY IS_WEAPON_READY_TO_FIRE "mainhand"
}
}
//==============================================================================
//==============================================================================
//
// Primary Attacks - Semi-Auto
//
//==============================================================================
state CHECK_PRIMARY_ATTACK_SEMIAUTO
{
movetype legs
action
{
none : default // stop torso animation
}
states
{
STAND : KILLED
// PAIN : PAIN
STAND : NEW_WEAPON
STAND : RELOAD
STAND : !IS_WEAPON_READY_TO_FIRE "mainhand"
ATTACK_PISTOL_PRIMARY : IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "pistol"
ATTACK_RIFLE_PRIMARY : IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "rifle"
CHARGE_ATTACK_GRENADE : IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "grenade"
ATTACK_ITEM_PRIMARY : IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "item"
ATTACK_BAZOOKA_PRIMARY : IS_WEAPON_ACTIVE "mainhand" "Bazooka"
ATTACK_BAZOOKA_PRIMARY : IS_WEAPON_ACTIVE "mainhand" "Panzerschreck"
ATTACK_SHOTGUN_PRIMARY : IS_WEAPON_ACTIVE "mainhand" "Shotgun"
// STAND : IS_WEAPON_ACTIVE "Error" // Generates an error if no appropriate
// attack state is chosen
STAND : !ATTACK_PRIMARY
}
}
state ATTACK_RIFLE_PRIMARY
{
movetype legs
entrycommands
{
viewmodelanim fire 1
}
action
{
// Fire from the hip when jogging,
// from the shoulder when walking or standing
rifle_stand_run_fire : POSITION_TYPE "standing" MOVEMENT_TYPE "running"
rifle_crouch_run_fire : POSITION_TYPE "crouching" MOVEMENT_TYPE "running"
rifle_stand_walk_fire : POSITION_TYPE "standing" MOVEMENT_TYPE "walking"
rifle_crouch_fire : POSITION_TYPE "crouching"
rifle_stand_fire : default
}
states
{
STAND : KILLED
// PAIN : PAIN
// STAND : !ATTACK_PRIMARY ANIMDONE_TORSO
ATTACK_SPRINGFIELD_RECHAMBER : ANIMDONE_TORSO IS_WEAPON_ACTIVE "mainhand" "Springfield '03 Sniper"
ATTACK_KAR98_RECHAMBER : ANIMDONE_TORSO IS_WEAPON_ACTIVE "mainhand" "Mauser KAR 98K"
ATTACK_KAR98_RECHAMBER : ANIMDONE_TORSO IS_WEAPON_ACTIVE "mainhand" "KAR98 - Sniper"
STAND : ANIMDONE_TORSO
CHECK_PRIMARY_ATTACK_SEMIAUTO : +ATTACK_PRIMARY IS_WEAPON_READY_TO_FIRE "mainhand"
}
}
state ATTACK_SPRINGFIELD_RECHAMBER
{
movetype legs
entrycommands
{
viewmodelanim rechamber
// safezoom 0
}
// exitcommands
// {
// safezoom 1
// }
action
{
springfield_crouch_rechamber : POSITION_TYPE "crouching"
springfield_stand_rechamber : default
}
states
{
STAND : KILLED
// PAIN : PAIN
STAND : ANIMDONE_TORSO
}
}
state ATTACK_KAR98_RECHAMBER
{
movetype legs
entrycommands
{
viewmodelanim rechamber
// safezoom 0
}
// exitcommands
// {
// safezoom 1
// }
action
{
kar98_crouch_rechamber : POSITION_TYPE "crouching"
kar98_stand_rechamber : default
}
states
{
STAND : KILLED
// PAIN : PAIN
STAND : ANIMDONE_TORSO
}
}
state ATTACK_PISTOL_PRIMARY
{
movetype legs
entrycommands
{
viewmodelanim fire 1
}
action
{
// Fire from the hip when jogging, from the shoulder when
// walking, or standing
pistol_silenced_stand_run_fire : POSITION_TYPE "standing" MOVEMENT_TYPE "running" IS_WEAPON_ACTIVE "mainhand" "Hi-Standard Silenced"
pistol_silenced_crouch_run_fire : POSITION_TYPE "crouching" MOVEMENT_TYPE "running" IS_WEAPON_ACTIVE "mainhand" "Hi-Standard Silenced"
pistol_silenced_crouch_fire : POSITION_TYPE "crouching" IS_WEAPON_ACTIVE "mainhand" "Hi-Standard Silenced"
pistol_silenced_stand_fire : IS_WEAPON_ACTIVE "mainhand" "Hi-Standard Silenced"
pistol_stand_run_fire : POSITION_TYPE "standing" MOVEMENT_TYPE "running"
pistol_crouch_run_fire : POSITION_TYPE "crouching" MOVEMENT_TYPE "running"
pistol_crouch_fire : POSITION_TYPE "crouching"
pistol_stand_fire : default
}
states
{
STAND : KILLED
// PAIN : PAIN
// STAND : !ATTACK_PRIMARY ANIMDONE_TORSO
STAND : ANIMDONE_TORSO
CHECK_PRIMARY_ATTACK_SEMIAUTO : +ATTACK_PRIMARY IS_WEAPON_READY_TO_FIRE "mainhand"
// allow pistol whip immediatly after firing
ATTACK_PISTOL_SECONDARY : +ATTACK_SECONDARY IS_WEAPON_READY_TO_FIRE "mainhand"
}
}
state ATTACK_ITEM_PRIMARY
{
movetype legs
entrycommands
{
weaponcommand mainhand anim fire
}
states
{
STAND : KILLED
// PAIN : PAIN
STAND : !ATTACK_PRIMARY
CHECK_PRIMARY_ATTACK_SEMIAUTO : +ATTACK_PRIMARY IS_WEAPON_READY_TO_FIRE "mainhand"
}
}
state ATTACK_BAZOOKA_PRIMARY
{
movetype legs
entrycommands
{
viewmodelanim fire 1
}
action
{
bazooka_stand_run_fire : POSITION_TYPE "standing" MOVEMENT_TYPE "running"
bazooka_crouch_run_fire : POSITION_TYPE "crouching" MOVEMENT_TYPE "running"
bazooka_crouch_fire : POSITION_TYPE "crouching"
bazooka_stand_fire : default
}
states
{
STAND : KILLED
// PAIN : PAIN
STAND : !ATTACK_PRIMARY ANIMDONE_TORSO
CHECK_PRIMARY_ATTACK_SEMIAUTO : +ATTACK_PRIMARY IS_WEAPON_READY_TO_FIRE "mainhand"
}
}
state ATTACK_SHOTGUN_PRIMARY
{
movetype legs
entrycommands
{
viewmodelanim fire 1
}
action
{
shotgun_stand_run_fire : POSITION_TYPE "standing" MOVEMENT_TYPE "running"
shotgun_crouch_run_fire : POSITION_TYPE "crouching" MOVEMENT_TYPE "running"
shotgun_crouch_fire : POSITION_TYPE "crouching"
shotgun_stand_fire : default
}
states
{
STAND : KILLED
// PAIN : PAIN
STAND : !ATTACK_PRIMARY ANIMDONE_TORSO
CHECK_PRIMARY_ATTACK_SEMIAUTO : +ATTACK_PRIMARY IS_WEAPON_READY_TO_FIRE "mainhand"
}
}
//==============================================================================
//==============================================================================
//
// Secondary Attacks (Always Semi-Auto fire)
//
//==============================================================================
state CHECK_SECONDARY_ATTACK
{
movetype legs
action
{
none : default // no torso animation
}
states
{
STAND : KILLED
// PAIN : PAIN
STAND : RELOAD
ATTACK_PISTOL_SECONDARY : IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "pistol" "secondary"
// ATTACK_RIFLE_2NDARY : IS_WEAPON_ACTIVE "mainhand" "M1_Garand"
// ATTACK_GRENADE_2NDARY : IS_WEAPON_ACTIVE "mainhand" "FragGrenade"
// ATTACK_RIFLE_2NDARY : IS_WEAPON_ACTIVE "mainhand" "MP40"
// ATTACK_RIFLE_2NDARY : IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "rifle" "secondary"
CHARGE_ATTACK_GRENADE_SECONDARY : IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "grenade" "secondary"
PUT_AWAY_ITEM : IS_WEAPON_ACTIVE "mainhand" "Spy Camera"
PUT_AWAY_ITEM : IS_WEAPON_ACTIVE "mainhand" "Binoculars"
// STAND : IS_WEAPON_ACTIVE "Error"
// STAND : !ATTACK_PRIMARY
STAND : default
}
}
// Pistol whip for silent kills
state ATTACK_PISTOL_SECONDARY
{
movetype legs
entrycommands
{
viewmodelanim fire_secondary 1
}
action
{
pistol_butt : default
}
states
{
STAND : KILLED
STAND : ANIMDONE_TORSO
}
}
// put away the item and pull out the last active weapon
state PUT_AWAY_ITEM
{
entrycommands
{
// deactivateweapon righthand
commanddelay 0.05 uselast
}
states
{
STAND : default
}
// exitcommands
// {
// uselast
// }
}
//==============================================================================
//==============================================================================
//
// Primary Charge Up Attacks (grenades)
//
//==============================================================================
state CHARGE_ATTACK_GRENADE
{
movetype legs
entrycommands
{
viewmodelanim charge
}
action
{
steilhandgranate_crouch_charge : IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate" POSITION_TYPE "crouching"
steilhandgranate_stand_charge : IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate"
grenade_crouch_charge : POSITION_TYPE "crouching"
grenade_stand_charge : default
}
states
{
// RELEASE_ATTACK_GRENADE : PAIN // This would make the player
// drop a grenade when he gets hit
// RELEASE_ATTACK_GRENADE : KILLED
RELEASE_KILLED_FRAG : KILLED
RELEASE_ATTACK_GRENADE : !ATTACK_PRIMARY MIN_CHARGE_TIME_MET "mainhand"
}
}
state RELEASE_ATTACK_GRENADE
{
movetype legs
entrycommands
{
viewmodelanim fire
}
action
{
steilhandgranate_crouch_fire : IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate" POSITION_TYPE "crouching"
steilhandgranate_stand_fire : IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate"
grenade_crouch_fire : POSITION_TYPE "crouching"
grenade_stand_fire : default
}
states
{
RELEASE_KILLED_FRAG : KILLED MIN_CHARGE_TIME_MET "mainhand" // killed before the grenade was released
STAND : KILLED
STAND : ANIMDONE_TORSO
}
}
state CHARGE_ATTACK_GRENADE_SECONDARY
{
movetype legs
entrycommands
{
viewmodelanim charge
}
action
{
steilhandgranate_crouch_charge_secondary : IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate" POSITION_TYPE "crouching"
steilhandgranate_stand_charge_secondary : IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate"
grenade_crouch_charge_secondary : POSITION_TYPE "crouching"
grenade_stand_charge_secondary : default
}
states
{
// RELEASE_ATTACK_GRENADE_SECONDARY : PAIN // This would make the player
// drop a grenade when he gets hit
// RELEASE_ATTACK_GRENADE_SECONDARY : KILLED
RELEASE_KILLED_FRAG : KILLED
RELEASE_ATTACK_GRENADE_SECONDARY : !ATTACK_SECONDARY MIN_CHARGE_TIME_MET "mainhand"
}
}
state RELEASE_ATTACK_GRENADE_SECONDARY
{
movetype legs
entrycommands
{
viewmodelanim fire
}
action
{
steilhandgranate_crouch_fire_secondary : IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate" POSITION_TYPE "crouching"
steilhandgranate_stand_fire_secondary : IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate"
grenade_crouch_fire_secondary : POSITION_TYPE "crouching"
grenade_stand_fire_secondary : default
}
states
{
RELEASE_KILLED_FRAG : KILLED MIN_CHARGE_TIME_MET "mainhand" // killed before the grenade was released
STAND : KILLED
STAND : ANIMDONE_TORSO
}
}
// killed while charging a frag grenade
state RELEASE_KILLED_FRAG
{
entrycommands
{
charge mainhand secondary // prep to drop the grenade
releasefire mainhand secondary // drop the grenade
}
states
{
STAND : default
}
}
//==============================================================================
//==============================================================================
//
// PUTAWAY
//
//==============================================================================
state PUTAWAY_MAIN
{
// movetype legs
entrycommands
{
zoomoff
viewmodelanim putaway
}
states
{
// don't go through the putaway anim if
// we're switching to another weapon
// only do if g_immediateswitch is set
PUTAWAY_SKIPANIM : IMMEDIATE_SWITCH NEW_WEAPON
PUTAWAY_PISTOL : IS_WEAPONCLASS_ACTIVE "mainhand" "pistol"
PUTAWAY_RIFLE : IS_WEAPONCLASS_ACTIVE "mainhand" "rifle"
PUTAWAY_GRENADE : IS_WEAPONCLASS_ACTIVE "mainhand" "grenade"
PUTAWAY_SMG : IS_WEAPONCLASS_ACTIVE "mainhand" "smg"
PUTAWAY_SMG : IS_WEAPON_ACTIVE "mainhand" "Moschetto"
PUTAWAY_MG : IS_WEAPONCLASS_ACTIVE "mainhand" "mg"
// PUTAWAY_PISTOL : IS_WEAPONCLASS_ACTIVE "mainhand" "item" // hold all items like a pistol for now
PUTAWAY_HEAVY : IS_WEAPONCLASS_ACTIVE "mainhand" "heavy"
// Catchall at the end
// PUTAWAY_RIFLE : default
PUTAWAY_NOANIM : default
}
}
// called when we want to skip the putaway anim
state PUTAWAY_SKIPANIM
{
entrycommands
{
deactivateweapon righthand
}
states
{
RAISE_WEAPON : default
}
}
state PUTAWAY_NOANIM
{
entrycommands
{
deactivateweapon righthand
}
states
{
RAISE_WEAPON : NEW_WEAPON
STAND : default
}
}
state PUTAWAY_PISTOL
{
// movetype legs
action
{
pistol_crouch_lower : POSITION_TYPE "crouching"
pistol_stand_lower : default
}
legs
{
pistol_stand_idle : ON_LADDER
}
states
{
STAND : KILLED
GET_ON_LADDER : ANIMDONE_TORSO ON_LADDER
STAND : ANIMDONE_TORSO
}
}
state PUTAWAY_RIFLE
{
// movetype legs
action
{
rifle_crouch_lower : POSITION_TYPE "crouching"
rifle_stand_lower : default
}
legs
{
rifle_stand_idle : ON_LADDER
}
states
{
STAND : KILLED
GET_ON_LADDER : ANIMDONE_TORSO ON_LADDER
STAND : ANIMDONE_TORSO
}
}
state PUTAWAY_SMG
{
// movetype legs
action
{
mp40_crouch_lower : IS_WEAPON_ACTIVE "mainhand" "MP40" POSITION_TYPE "crouching"
mp40_stand_lower : IS_WEAPON_ACTIVE "mainhand" "MP40"
// moschetto_crouch_lower : IS_WEAPON_ACTIVE "mainhand" "Moschetto" POSITION_TYPE "crouching"
// moschetto_stand_lower : IS_WEAPON_ACTIVE "mainhand" "Moschetto"
smg_crouch_lower : POSITION_TYPE "crouching"
smg_stand_lower : default
}
legs
{
mp40_stand_idle : IS_WEAPON_ACTIVE "mainhand" "MP40" ON_LADDER
// moschetto_stand_idle : IS_WEAPON_ACTIVE "mainhand" "Moschetto" ON_LADDER
smg_stand_idle : ON_LADDER
}
states
{
STAND : KILLED
GET_ON_LADDER : ANIMDONE_TORSO ON_LADDER
STAND : ANIMDONE_TORSO
}
}
state PUTAWAY_MG
{
// movetype legs
action
{
mp44_crouch_lower : IS_WEAPON_ACTIVE "mainhand" "StG 44" POSITION_TYPE "crouching"
mp44_stand_lower : IS_WEAPON_ACTIVE "mainhand" "StG 44"
mg_crouch_lower : POSITION_TYPE "crouching"
mg_stand_lower : default
}
legs
{
mp44_stand_idle : IS_WEAPON_ACTIVE "mainhand" "StG 44" ON_LADDER
mg_stand_idle : ON_LADDER
}
states
{
STAND : KILLED
GET_ON_LADDER : ANIMDONE_TORSO ON_LADDER
STAND : ANIMDONE_TORSO
}
}
state PUTAWAY_GRENADE
{
// movetype legs
action
{
steilhandgranate_crouch_lower : IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate" POSITION_TYPE "crouching"
steilhandgranate_stand_lower : IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate"
grenade_crouch_lower : POSITION_TYPE "crouching"
grenade_stand_lower : default
}
legs
{
steilhandgranate_stand_idle : IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate"
grenade_stand_idle : ON_LADDER
}
states
{
STAND : KILLED
GET_ON_LADDER : ANIMDONE_TORSO ON_LADDER
STAND : ANIMDONE_TORSO
}
}
state PUTAWAY_HEAVY
{
// movetype legs
action
{
// shotgun_crouch_lower : POSITION_TYPE "crouching" IS_WEAPON_ACTIVE "mainhand" "Shotgun"
// shotgun_stand_lower : IS_NEW_WEAPON "mainhand" "Shotgun"
shotgun_crouch_lower : POSITION_TYPE "crouching" IS_WEAPON_ACTIVE "mainhand" "Shotgun"
shotgun_stand_lower : IS_WEAPON_ACTIVE "mainhand" "Shotgun"
bazooka_crouch_lower : POSITION_TYPE "crouching"
bazooka_stand_lower : default
}
legs
{
shotgun_stand_idle : ON_LADDER IS_WEAPON_ACTIVE "mainhand" "Shotgun"
bazooka_stand_idle : ON_LADDER
}
states
{
STAND : KILLED
GET_ON_LADDER : ANIMDONE_TORSO ON_LADDER
STAND : ANIMDONE_TORSO
}
}
//==============================================================================
//==============================================================================
//
// RAISE_WEAPON
//
//==============================================================================
state RAISE_WEAPON
{
movetype legs
entrycommands
{
viewmodelanim pullout
// just to make sure nothing funky's
// attached that shouldn't be.
correctweaponattachments
}
states
{
RAISE_PISTOL : IS_NEW_WEAPONCLASS "mainhand" "pistol"
RAISE_RIFLE : IS_NEW_WEAPONCLASS "mainhand" "rifle"
RAISE_GRENADE : IS_NEW_WEAPONCLASS "mainhand" "grenade"
RAISE_SMG : IS_NEW_WEAPONCLASS "mainhand" "smg"
RAISE_SMG : IS_NEW_WEAPON "mainhand" "Moschetto"
RAISE_MG : IS_NEW_WEAPONCLASS "mainhand" "mg"
// RAISE_PISTOL : IS_NEW_WEAPONCLASS "mainhand" "item" // hold all items like a pistol for now
RAISE_HEAVY : IS_NEW_WEAPONCLASS "mainhand" "heavy"
RAISE_PAPERS : IS_NEW_WEAPON "mainhand" "Papers"
// RAISE_RIFLE : default
RAISE_NOANIM : default
}
}
state RAISE_NOANIM
{
entrycommands
{
// delay the activation for a frame so that the player
// spends at least one frame without a weapon, thus
// letting the legs state know that we've switched
commanddelay 0.05 activatenewweapon
commanddelay 0.05 forcetorsostate "STAND"
}
// states
// {
// STAND : default
// }
}
state RAISE_RIFLE
{
movetype legs
action
{
rifle_crouch_raise : POSITION_TYPE "crouching"
rifle_stand_raise : default
}
states
{
STAND : KILLED
STAND : ANIMDONE_TORSO
// allow immediate switching to a different weapon instead
RAISE_ABORT : +NEW_WEAPON
}
}
state RAISE_SMG
{
movetype legs
action
{
mp40_crouch_raise : IS_NEW_WEAPON "mainhand" "MP40" POSITION_TYPE "crouching"
mp40_stand_raise : IS_NEW_WEAPON "mainhand" "MP40"
// moschetto_crouch_raise : IS_NEW_WEAPON "mainhand" "Moschetto" POSITION_TYPE "crouching"
// moschetto_stand_raise : IS_NEW_WEAPON "mainhand" "Moschetto"
smg_crouch_raise : POSITION_TYPE "crouching"
smg_stand_raise : default
}
states
{
STAND : KILLED
STAND : ANIMDONE_TORSO
// allow immediate switching to a different weapon instead
RAISE_ABORT : +NEW_WEAPON
}
}
state RAISE_MG
{
movetype legs
action
{
mp44_crouch_raise : IS_NEW_WEAPON "mainhand" "StG 44" POSITION_TYPE "crouching"
mp44_stand_raise : IS_NEW_WEAPON "mainhand" "StG 44"
mg_crouch_raise : POSITION_TYPE "crouching"
mg_stand_raise : default
}
states
{
STAND : KILLED
STAND : ANIMDONE_TORSO
// allow immediate switching to a different weapon instead
RAISE_ABORT : +NEW_WEAPON
}
}
state RAISE_PISTOL
{
movetype legs
action
{
pistol_crouch_raise : POSITION_TYPE "crouching"
pistol_stand_raise : default
}
states
{
STAND : KILLED
STAND : ANIMDONE_TORSO
// allow immediate switching to a different weapon instead
RAISE_ABORT : +NEW_WEAPON
}
}
state RAISE_GRENADE
{
movetype legs
action
{
steilhandgranate_crouch_raise : IS_NEW_WEAPON "mainhand" "Stielhandgranate" POSITION_TYPE "crouching"
steilhandgranate_stand_raise : IS_NEW_WEAPON "mainhand" "Stielhandgranate"
grenade_crouch_raise : POSITION_TYPE "crouching"
grenade_stand_raise : default
}
states
{
STAND : KILLED
STAND : ANIMDONE_TORSO
// allow immediate switching to a different weapon instead
RAISE_ABORT : +NEW_WEAPON
}
}
state RAISE_HEAVY
{
movetype legs
action
{
shotgun_crouch_raise : POSITION_TYPE "crouching" IS_NEW_WEAPON "mainhand" "Shotgun"
shotgun_stand_raise : IS_NEW_WEAPON "mainhand" "Shotgun"
bazooka_crouch_raise : POSITION_TYPE "crouching"
bazooka_stand_raise : default
}
states
{
STAND : KILLED
STAND : ANIMDONE_TORSO
// allow immediate switching to a different weapon instead
RAISE_ABORT : +NEW_WEAPON
}
}
state RAISE_PAPERS
{
movetype legs
action
{
show_papers : default
}
states
{
STAND : KILLED
STAND : ANIMDONE_TORSO
// allow immediate switching to a different weapon instead
RAISE_ABORT : +NEW_WEAPON
}
}
// This state allows the player to abort the raising
// of a weapon in favor of a different new weapon.
state RAISE_ABORT
{
entrycommands
{
deactivateweapon righthand
}
states
{
RAISE_WEAPON : default
}
}
//==============================================================================
//==============================================================================
//
// Weapon Reloading
//
//==============================================================================
state RELOAD_WEAPON
{
states
{
RELOAD_SPRINGFIELD : IS_WEAPON_ACTIVE "mainhand" "Springfield '03 Sniper"
RELOAD_SPRINGFIELD : IS_WEAPON_ACTIVE "mainhand" "KAR98 - Sniper"
RELOAD_SHOTGUN : IS_WEAPON_ACTIVE "mainhand" "Shotgun"
RELOAD_PISTOL : IS_WEAPONCLASS_ACTIVE "mainhand" "pistol"
RELOAD_RIFLE : IS_WEAPONCLASS_ACTIVE "mainhand" "rifle"
RELOAD_SMG : IS_WEAPONCLASS_ACTIVE "mainhand" "smg"
RELOAD_MG : IS_WEAPONCLASS_ACTIVE "mainhand" "mg"
RELOAD_GRENADE : IS_WEAPONCLASS_ACTIVE "mainhand" "grenade"
// RELOAD_PISTOL : IS_WEAPONCLASS_ACTIVE "mainhand" "item" // hold all items like a pistol for now
RELOAD_HEAVY : IS_WEAPONCLASS_ACTIVE "mainhand" "heavy"
RELOAD_RIFLE : default
}
}
state RELOAD_RIFLE
{
movetype legs
entrycommands
{
zoomoff
viewmodelanim reload
}
action
{
kar98_reload : IS_WEAPON_ACTIVE "mainhand" "Mauser KAR 98K"
rifle_reload : default
}
states
{
STAND : KILLED
STAND : ANIMDONE_TORSO
RELOAD_INTERUPTED : NEW_WEAPON
RELOAD_INTERUPTED : IS_USING_VEHICLE
RELOAD_INTERUPTED : IS_USING_TURRET
}
}
state RELOAD_SMG
{
movetype legs
entrycommands
{
viewmodelanim reload
}
action
{
mp40_reload : IS_WEAPON_ACTIVE "mainhand" "MP40"
// moschetto_reload : IS_WEAPON_ACTIVE "mainhand" "Moschetto"
smg_reload : default
}
states
{
STAND : KILLED
STAND : ANIMDONE_TORSO
RELOAD_INTERUPTED_CORRECT_ATTACHMENTS : NEW_WEAPON
RELOAD_INTERUPTED_CORRECT_ATTACHMENTS : IS_USING_VEHICLE
RELOAD_INTERUPTED_CORRECT_ATTACHMENTS : IS_USING_TURRET
}
}
state RELOAD_MG
{
movetype legs
entrycommands
{
viewmodelanim reload
}
action
{
mp44_reload : IS_WEAPON_ACTIVE "mainhand" "StG 44"
mg_reload : default
}
states
{
STAND : KILLED
STAND : ANIMDONE_TORSO
RELOAD_INTERUPTED_CORRECT_ATTACHMENTS : NEW_WEAPON
RELOAD_INTERUPTED_CORRECT_ATTACHMENTS : IS_USING_VEHICLE
RELOAD_INTERUPTED_CORRECT_ATTACHMENTS : IS_USING_TURRET
}
}
state RELOAD_PISTOL
{
movetype legs
entrycommands
{
viewmodelanim reload
}
action
{
p38_reload : IS_WEAPON_ACTIVE "mainhand" "Walther P38"
histandard_reload : IS_WEAPON_ACTIVE "mainhand" "Hi-Standard Silenced"
pistol_reload : default
}
states
{
STAND : KILLED
STAND : ANIMDONE_TORSO
RELOAD_INTERUPTED_CORRECT_ATTACHMENTS : NEW_WEAPON
RELOAD_INTERUPTED_CORRECT_ATTACHMENTS : IS_USING_VEHICLE
RELOAD_INTERUPTED_CORRECT_ATTACHMENTS : IS_USING_TURRET
}
}
state RELOAD_GRENADE
{
movetype legs
entrycommands
{
viewmodelanim reload
}
action
{
steilhandgranate_reload : IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate"
grenade_reload : default
}
states
{
STAND : KILLED
STAND : ANIMDONE_TORSO
// RELOAD_INTERUPTED : NEW_WEAPON // so quick, don't bother with interupting it
}
}
state RELOAD_HEAVY
{
movetype legs
entrycommands
{
viewmodelanim reload
}
action
{
panzerschreck_reload : IS_WEAPON_ACTIVE "mainhand" "Panzerschreck"
bazooka_reload : default
}
states
{
STAND : KILLED
STAND : ANIMDONE_TORSO
RELOAD_INTERUPTED_CORRECT_ATTACHMENTS : NEW_WEAPON
RELOAD_INTERUPTED_CORRECT_ATTACHMENTS : IS_USING_VEHICLE
RELOAD_INTERUPTED_CORRECT_ATTACHMENTS : IS_USING_TURRET
}
}
// start of reloading the springfield
state RELOAD_SPRINGFIELD
{
movetype legs
entrycommands
{
zoomoff
viewmodelanim reload
}
action
{
springfield_reload_start : default
}
states
{
STAND : KILLED
RELOAD_SPRINGFIELD_SINGLE : ANIMDONE_TORSO
RELOAD_INTERUPTED : NEW_WEAPON
RELOAD_INTERUPTED : IS_USING_VEHICLE
RELOAD_INTERUPTED : IS_USING_TURRET
}
}
// loads in a single bullet
state RELOAD_SPRINGFIELD_SINGLE
{
movetype legs
entrycommands
{
viewmodelanim reload_single 1
}
action
{
springfield_reload_loop : default
}
states
{
STAND : KILLED
// RELOAD_INTERUPTED : NEW_WEAPON
RELOAD_SPRINGFIELD_END : NEW_WEAPON
RELOAD_INTERUPTED_CORRECT_ATTACHMENTS : IS_USING_VEHICLE
RELOAD_INTERUPTED_CORRECT_ATTACHMENTS : IS_USING_TURRET
// allow early out
RELOAD_SPRINGFIELD_END : +ATTACK_PRIMARY HAS_AMMO_IN_CLIP "mainhand" !RELOAD
RELOAD_SPRINGFIELD_END : PUTAWAYMAIN
RELOAD_SPRINGFIELD_CHECK_CONTINUE : ANIMDONE_TORSO
}
}
// this check to see if the springfield should continue reloading, or if it's done
state RELOAD_SPRINGFIELD_CHECK_CONTINUE
{
movetype legs
entrycommands
{
reload // this makes the weapon want to continue reloading if it can
}
action
{
none : default
}
states
{
// RELOAD_INTERUPTED : NEW_WEAPON
RELOAD_SPRINGFIELD_SINGLE : RELOAD
RELOAD_SPRINGFIELD_END : default
}
}
// this is the end of the shotgun reload sequence
state RELOAD_SPRINGFIELD_END
{
movetype legs
entrycommands
{
viewmodelanim reload_end
// just in case we interupted a shell reload
// correctweaponattachments
}
action
{
springfield_reload_end : default
}
states
{
STAND : KILLED
STAND : ANIMDONE_TORSO
// RELOAD_INTERUPTED : NEW_WEAPON
}
}
// start of reloading the shotgun
state RELOAD_SHOTGUN
{
movetype legs
entrycommands
{
viewmodelanim reload
}
action
{
shotgun_reload_start : default
}
states
{
STAND : KILLED
RELOAD_SHOTGUN_SINGLE : ANIMDONE_TORSO
RELOAD_INTERUPTED : NEW_WEAPON
RELOAD_INTERUPTED : IS_USING_VEHICLE
RELOAD_INTERUPTED : IS_USING_TURRET
}
}
// loads in a single shotgun shell
state RELOAD_SHOTGUN_SINGLE
{
movetype legs
entrycommands
{
viewmodelanim reload_single 1
}
action
{
shotgun_reload_loop : default
}
states
{
STAND : KILLED
// RELOAD_INTERUPTED : NEW_WEAPON
RELOAD_SHOTGUN_END : NEW_WEAPON
RELOAD_INTERUPTED_CORRECT_ATTACHMENTS : IS_USING_VEHICLE
RELOAD_INTERUPTED_CORRECT_ATTACHMENTS : IS_USING_TURRET
// allow early out
RELOAD_SHOTGUN_END : +ATTACK_PRIMARY HAS_AMMO_IN_CLIP "mainhand" !RELOAD
RELOAD_SHOTGUN_END : PUTAWAYMAIN
RELOAD_SHOTGUN_CHECK_CONTINUE : ANIMDONE_TORSO
}
}
// this check to see if the shotgun should continue reloading, or if it's done
state RELOAD_SHOTGUN_CHECK_CONTINUE
{
movetype legs
entrycommands
{
reload // this makes the weapon want to continue reloading if it can
}
action
{
none : default
}
states
{
RELOAD_SHOTGUN_SINGLE : RELOAD
// RELOAD_INTERUPTED : NEW_WEAPON
RELOAD_SHOTGUN_END : default
}
}
// this is the end of the shotgun reload sequence
state RELOAD_SHOTGUN_END
{
movetype legs
entrycommands
{
viewmodelanim reload_end
// just in case we interupted a shell reload
// correctweaponattachments
}
action
{
shotgun_reload_end : default
}
states
{
STAND : KILLED
STAND : ANIMDONE_TORSO
// RELOAD_INTERUPTED : NEW_WEAPON
}
}
state RELOAD_INTERUPTED
{
states
{
STAND : default
}
}
state RELOAD_INTERUPTED_CORRECT_ATTACHMENTS
{
entrycommands
{
correctweaponattachments
}
states
{
STAND : default
}
}
//==============================================================================
//==============================================================================
//
// Pain
//
//==============================================================================
state PAIN
{
movetype legs
entrycommands
{
// clear the pain out
nextpaintime 0.05
}
states
{
PAIN_SHOTGUN : IS_WEAPON_ACTIVE "mainhand" "Shotgun"
PAIN_PISTOL : IS_WEAPONCLASS_ACTIVE "mainhand" "pistol"
PAIN_RIFLE : IS_WEAPONCLASS_ACTIVE "mainhand" "rifle"
PAIN_SMG : IS_WEAPONCLASS_ACTIVE "mainhand" "smg"
PAIN_MG : IS_WEAPONCLASS_ACTIVE "mainhand" "mg"
PAIN_GRENADE : IS_WEAPONCLASS_ACTIVE "mainhand" "grenade"
PAIN_HEAVY : IS_WEAPONCLASS_ACTIVE "mainhand" "heavy"
PAIN_RIFLE : default
}
}
state PAIN_SHOTGUN
{
action
{
shotgun_pain_ducked : POSITION_TYPE "crouching"
shotgun_pain : default
}
states
{
PAIN_WAIT_TILL_DONE : default
}
}
state PAIN_PISTOL
{
action
{
pistol_pain_ducked : POSITION_TYPE "crouching"
pistol_pain : default
}
states
{
PAIN_WAIT_TILL_DONE : default
}
}
state PAIN_RIFLE
{
action
{
rifle_pain_ducked : POSITION_TYPE "crouching"
rifle_pain : default
}
states
{
PAIN_WAIT_TILL_DONE : default
}
}
state PAIN_SMG
{
action
{
smg_pain_ducked : POSITION_TYPE "crouching"
smg_pain : default
}
states
{
PAIN_WAIT_TILL_DONE : default
}
}
state PAIN_MG
{
action
{
mg_pain_ducked : POSITION_TYPE "crouching"
mg_pain : default
}
states
{
PAIN_WAIT_TILL_DONE : default
}
}
state PAIN_GRENADE
{
action
{
mg_pain_ducked : POSITION_TYPE "crouching"
mg_pain : default
}
states
{
PAIN_WAIT_TILL_DONE : default
}
}
state PAIN_HEAVY
{
action
{
mg_pain_ducked : POSITION_TYPE "crouching"
mg_pain : default
}
states
{
PAIN_WAIT_TILL_DONE : default
}
}
state PAIN_WAIT_TILL_DONE
{
states
{
KILLED : KILLED
PAIN : PAIN
// allow the player to interupt a pain animation with an attack
CHECK_PRIMARY_ATTACK_SEMIAUTO : +ATTACK_PRIMARY IS_WEAPON_SEMIAUTO "mainhand" IS_WEAPON_READY_TO_FIRE "mainhand"
CHECK_PRIMARY_ATTACK_FULLAUTO : ATTACK_PRIMARY !IS_WEAPON_SEMIAUTO "mainhand" IS_WEAPON_READY_TO_FIRE "mainhand"
CHECK_SECONDARY_ATTACK : +ATTACK_SECONDARY
STAND : ANIMDONE_TORSO
}
}
//==============================================================================
//
// Death
//
//==============================================================================
state KILLED
{
movetype anim
entrycommands
{
nextpaintime -1 // allow all pain calls to work properly for death anim selection
}
states
{
EXPLOSION_KILLED : PAIN_TYPE "explosion"
EXPLOSION_KILLED : PAIN_TYPE "grenade"
EXPLOSION_KILLED : PAIN_TYPE "rocket"
KILLED_GENERIC : default
}
}
state KILLED_GENERIC
{
states
{
KILLED_RUNNING : FORWARD_VELOCITY "130"
KILLED_CROUCHING : POSITION_TYPE "crouching"
KILLED_STANDING : default
}
}
state KILLED_RUNNING
{
action
{
death_knockedup : PAIN_DIRECTION "front" PAIN_THRESHOLD "50" CHANCE "30"
death_chest : PAIN_DIRECTION "front" PAIN_THRESHOLD "50"
death_run : default
}
states
{
KILLED_WAIT_FOR_DONE : default
}
}
state KILLED_CROUCHING
{
action
{
death_frontcrouch : PAIN_DIRECTION "rear"
rifle_pain_kneestodeath : default
}
states
{
KILLED_WAIT_FOR_DONE : default
}
}
state KILLED_STANDING
{
states
{
KILLED_LOWER_TORSO : PAIN_LOCATION "pelvis"
KILLED_LOWER_TORSO : PAIN_LOCATION "torso_lower"
KILLED_UPPER_TORSO : PAIN_LOCATION "torso_mid"
KILLED_UPPER_TORSO : PAIN_LOCATION "torso_upper"
KILLED_NECK : PAIN_LOCATION "neck"
KILLED_HEAD : PAIN_LOCATION "head"
KILLED_HEAD : PAIN_LOCATION "helmet"
KILLED_RIGHT_ARM : PAIN_LOCATION "r_arm_upper"
KILLED_RIGHT_ARM : PAIN_LOCATION "r_arm_lower"
KILLED_RIGHT_ARM : PAIN_LOCATION "r_hand"
KILLED_LEFT_ARM : PAIN_LOCATION "l_arm_upper"
KILLED_LEFT_ARM : PAIN_LOCATION "l_arm_lower"
KILLED_LEFT_ARM : PAIN_LOCATION "l_hand"
KILLED_LEG : PAIN_LOCATION "r_leg_upper"
KILLED_LEG : PAIN_LOCATION "r_leg_lower"
KILLED_LEG : PAIN_LOCATION "r_foot"
KILLED_LEG : PAIN_LOCATION "l_leg_upper"
KILLED_LEG : PAIN_LOCATION "l_leg_lower"
KILLED_LEG : PAIN_LOCATION "l_foot"
KILLED_UPPER_TORSO : default
}
}
state KILLED_LOWER_TORSO
{
action
{
death_back : PAIN_DIRECTION "front" CHANCE "60"
death_knockedup : PAIN_DIRECTION "rear" CHANCE "35"
death_run : PAIN_DIRECTION "rear" CHANCE "70"
death_crotch : CHANCE "60"
death_chest : default
}
states
{
KILLED_WAIT_FOR_DONE : default
}
}
state KILLED_UPPER_TORSO
{
action
{
death_knockedup : PAIN_DIRECTION "front" CHANCE "20"
death_back : PAIN_DIRECTION "front" CHANCE "60"
death_run : PAIN_DIRECTION "rear" CHANCE "40"
death_frontchoke : CHANCE "30"
death_shoot : CHANCE "60"
death_chest : default
}
states
{
KILLED_WAIT_FOR_DONE : default
}
}
state KILLED_NECK
{
action
{
death_frontchoke : CHANCE "50"
death_choke : default
}
states
{
KILLED_WAIT_FOR_DONE : default
}
}
state KILLED_HEAD
{
action
{
death_back : PAIN_DIRECTION "front" CHANCE "50"
death_head_flyforward : PAIN_DIRECTION "rear" CHANCE "30"
death_headpistol : CHANCE "20"
death_twist : CHANCE "25"
death_shoot : CHANCE "33"
death_fall_to_knees : CHANCE "50"
death_collapse : default
}
states
{
KILLED_WAIT_FOR_DONE : default
}
}
state KILLED_RIGHT_ARM
{
action
{
death_twist : PAIN_DIRECTION "rear" CHANCE "50"
death_fall_back : CHANCE "30"
death_shoot : CHANCE "50"
death_chest : default
}
states
{
KILLED_WAIT_FOR_DONE : default
}
}
state KILLED_LEFT_ARM
{
action
{
death_twist : PAIN_DIRECTION "front" CHANCE "50"
death_fall_back : CHANCE "30"
death_shoot : CHANCE "50"
death_chest : default
}
states
{
KILLED_WAIT_FOR_DONE : default
}
}
state KILLED_LEG
{
action
{
death_knockedup : PAIN_DIRECTION "rear" CHANCE "50"
death_fall_back : CHANCE "25"
death_shoot : CHANCE "33"
death_fall_to_knees : CHANCE "50"
death_chest : default
}
states
{
KILLED_WAIT_FOR_DONE : default
}
}
//state KILLED_GENERIC
//{
// action
// {
// death_crouch : POSITION_TYPE "crouching"
//
// death : default
// }
//
// states
// {
// KILLED_WAIT_FOR_DONE : default
// }
//}
state EXPLOSION_KILLED
{
action
{
death_explosion_large : PAIN_THRESHOLD "150"
// death_explosion_small : PAIN_THRESHOLD "130"
// directional death animations of in middle damage range
// death_explosion_front : PAIN_DIRECTION "rear"
death_explosion_back : PAIN_DIRECTION "front"
death_explosion_left : PAIN_DIRECTION "left"
death_explosion_right : PAIN_DIRECTION "right"
death_explosion_small : default // a just-in-case catch-all
}
states
{
KILLED_WAIT_FOR_DONE : default
}
}
state KILLED_WAIT_FOR_DONE
{
states
{
KILLED_DONE : ANIMDONE_TORSO
}
exitcommands
{
dead // Frees up resources and tells everyone I'm dead.
}
}
state KILLED_DONE
{
movetype anim
}
//==============================================================================
//==============================================================================
//
// Ladder Climbing
//
//==============================================================================
state USE_LADDER
{
movetype climbwall
entrycommands
{
safeholster 1 // put our weapon away
attachtoladder // gets the ladder we're going to be climbing
}
// action
// {
// none : default
// }
states
{
// PUTAWAY_MAIN : PUTAWAYMAIN
LADDER_PUTAWAY : PUTAWAYMAIN
LATCH_ONTO_LADDER : !ONGROUND
GET_ON_LADDER : default
}
}
state LADDER_PUTAWAY
{
entrycommands
{
deactivateweapon righthand
}
states
{
LATCH_ONTO_LADDER : !ONGROUND
GET_ON_LADDER : default
}
}
state GET_ON_LADDER
{
movetype climbwall
// these entry commands ensure that the player
// will be standing when he gets off the ladder
entrycommands
{
modheight "stand"
movementstealth "1.0"
moveposflags "standing"
}
action
{
ladder_geton_top : AT_TOP_OF_LADDER
ladder_geton_bottom : default
}
states
{
// STAND : KILLED
FINISHED_GET_OFF_LADDER : KILLED
// we go to LADDER_LEFT because the left hand will be up once we're on
LADDER_IDLE_LEFT : ANIMDONE_TORSO
}
}
// This is for when the player grabs the ladder while not on the ground
state LATCH_ONTO_LADDER
{
movetype climbwall
// these entry commands ensure that the player
// will be standing when he gets off the ladder
entrycommands
{
modheight "stand"
movementstealth "1.0"
moveposflags "standing"
tweakladderpos // make sure we're positioned properly on the ladder
}
states
{
// LADDER_IDLE_LEFT : default
LADDER_DOWN_LEFT : default
}
}
state GET_OFF_LADDER_TOP
{
movetype climbwall
action
{
ladder_getoff_top : default
}
states
{
FINISHED_GET_OFF_LADDER : KILLED
FINISHED_GET_OFF_LADDER : ANIMDONE_TORSO
}
}
state GET_OFF_LADDER_BOTTOM
{
movetype climbwall
action
{
ladder_getoff_bottom : default
}
states
{
FINISHED_GET_OFF_LADDER : KILLED
FINISHED_GET_OFF_LADDER : ANIMDONE_TORSO
}
}
state FINISHED_GET_OFF_LADDER
{
movetype legs
entrycommands
{
unattachfromladder
safeholster 0 // pull weapon back out if we put it away to get on the ladder
}
states
{
STAND : default
}
}
// same as FINISHED_GET_OFF_LADDER, except that the player is jumping off
state JUMP_OFF_LADDER
{
movetype legs
entrycommands
{
unattachfromladder
safeholster 0 // pull weapon back out if we put it away to get on the ladder
jumpxy -70 0 150
}
states
{
STAND : default
}
}
// idling on a ladder with the left hand high
state LADDER_IDLE_LEFT
{
movetype climbwall
entrycommands
{
// viewmodelanim idle
tweakladderpos // make sure we're positioned properly on the ladder
}
action
{
ladder_idle_left : default
}
states
{
// STAND : KILLED
FINISHED_GET_OFF_LADDER : KILLED
// check for emergency getaway
JUMP_OFF_LADDER : +JUMP
PUTAWAY_MAIN : PUTAWAYMAIN // just in case the weapon isn't put away yet
// check for getting off top of the ladder
GET_OFF_LADDER_TOP : FORWARD LOOKING_UP "-30" CAN_GET_OFF_LADDER_TOP
GET_OFF_LADDER_TOP : BACKWARD !LOOKING_UP "-30" CAN_GET_OFF_LADDER_TOP
// check for getting off bottom of the ladder
GET_OFF_LADDER_BOTTOM : FORWARD !LOOKING_UP "-30" CAN_GET_OFF_LADDER_BOTTOM
GET_OFF_LADDER_BOTTOM : BACKWARD LOOKING_UP "-30" CAN_GET_OFF_LADDER_BOTTOM
LADDER_UP_RIGHT : FORWARD LOOKING_UP "-30" CAN_CLIMB_UP_LADDER
LADDER_UP_RIGHT : BACKWARD !LOOKING_UP "-30" CAN_CLIMB_UP_LADDER
LADDER_DOWN_LEFT : FORWARD !LOOKING_UP "-30" CAN_CLIMB_DOWN_LADDER
LADDER_DOWN_LEFT : BACKWARD LOOKING_UP "-30" CAN_CLIMB_DOWN_LADDER
// LADDER_SLIDE : CROUCH
// GET_OFF_LADDER : +USE
}
}
// idling on a ladder with the right hand high
state LADDER_IDLE_RIGHT
{
movetype climbwall
entrycommands
{
// viewmodelanim idle
tweakladderpos // make sure we're positioned properly on the ladder
}
action
{
ladder_idle_right : default
}
states
{
// STAND : KILLED
FINISHED_GET_OFF_LADDER : KILLED
// check for emergency getaway
JUMP_OFF_LADDER : +JUMP
PUTAWAY_MAIN : PUTAWAYMAIN // just in case the weapon isn't put away yet
// check for getting off top of the ladder
GET_OFF_LADDER_TOP : FORWARD LOOKING_UP "-30" CAN_GET_OFF_LADDER_TOP
GET_OFF_LADDER_TOP : BACKWARD !LOOKING_UP "-30" CAN_GET_OFF_LADDER_TOP
// check for getting off bottom of the ladder
GET_OFF_LADDER_BOTTOM : FORWARD !LOOKING_UP "-30" CAN_GET_OFF_LADDER_BOTTOM
GET_OFF_LADDER_BOTTOM : BACKWARD LOOKING_UP "-30" CAN_GET_OFF_LADDER_BOTTOM
LADDER_UP_LEFT : FORWARD LOOKING_UP "-30" CAN_CLIMB_UP_LADDER
LADDER_UP_LEFT : BACKWARD !LOOKING_UP "-30" CAN_CLIMB_UP_LADDER
LADDER_DOWN_RIGHT : FORWARD !LOOKING_UP "-30" CAN_CLIMB_DOWN_LADDER
LADDER_DOWN_RIGHT : BACKWARD LOOKING_UP "-30" CAN_CLIMB_DOWN_LADDER
// LADDER_SLIDE : CROUCH
// GET_OFF_LADDER : +USE
}
}
state LADDER_UP_LEFT
{
movetype climbwall
entrycommands
{
// tweakladderpos // make sure we're positioned properly on the ladder
}
action
{
ladder_up_left : default
}
states
{
// STAND : KILLED
FINISHED_GET_OFF_LADDER : KILLED
// LADDER_SLIDE : CROUCH
// check for emergency getaway
JUMP_OFF_LADDER : +JUMP
LADDER_IDLE_LEFT : ANIMDONE_TORSO
}
}
state LADDER_UP_RIGHT
{
movetype climbwall
entrycommands
{
// tweakladderpos // make sure we're positioned properly on the ladder
}
action
{
ladder_up_right : default
}
states
{
// STAND : KILLED
FINISHED_GET_OFF_LADDER : KILLED
// LADDER_SLIDE : CROUCH
// check for emergency getaway
JUMP_OFF_LADDER : +JUMP
LADDER_IDLE_RIGHT : ANIMDONE_TORSO
}
}
state LADDER_DOWN_LEFT
{
movetype climbwall
entrycommands
{
// tweakladderpos // make sure we're positioned properly on the ladder
}
action
{
ladder_down_left : default
}
states
{
// STAND : KILLED
FINISHED_GET_OFF_LADDER : KILLED
// LADDER_SLIDE : CROUCH
// check for emergency getaway
JUMP_OFF_LADDER : +JUMP
LADDER_IDLE_RIGHT : ANIMDONE_TORSO
}
}
state LADDER_DOWN_RIGHT
{
movetype climbwall
entrycommands
{
// tweakladderpos // make sure we're positioned properly on the ladder
}
action
{
ladder_down_right : default
}
states
{
// STAND : KILLED
FINISHED_GET_OFF_LADDER : KILLED
// LADDER_SLIDE : CROUCH
// check for emergency getaway
JUMP_OFF_LADDER : +JUMP
LADDER_IDLE_LEFT : ANIMDONE_TORSO
}
}
state LADDER_SLIDE
{
movetype climbwall
action
{
ladder_slide : default
}
states
{
// STAND : KILLED
FINISHED_GET_OFF_LADDER : KILLED
// check for emergency getaway
FINISHED_GET_OFF_LADDER : +JUMP
FINISHED_GET_OFF_LADDER : ONGROUND
LADDER_IDLE_LEFT : !CROUCH
}
}
//==============================================================================
//==============================================================================
//
// Generic Use
//
//==============================================================================
state GENERIC_USE
{
entrycommands
{
usestuff
}
states
{
STAND : default
}
}
//==============================================================================
//==============================================================================
//
// Vehicles
//
//==============================================================================
state VEHICLE_PUTAWAY
{
entrycommands
{
deactivateweapon righthand
}
states
{
VEHICLE_IDLE : default
}
}
state VEHICLE_START
{
// movetype anim
// action
// {
// vehicle_idle : default
// }
states
{
VEHICLE_PUTAWAY : PUTAWAYMAIN // Basic put weapon away move.
VEHICLE_IDLE : default
}
}
state VEHICLE_IDLE
{
movetype anim
action
{
vehicle_idle : default
}
states
{
VEHICLE_USE : +USE
STAND : !IS_USING_VEHICLE
}
}
state VEHICLE_USE
{
movetype anim
// entrycommands
// {
// usestuff
// }
action
{
vehicle_idle : default
}
states
{
VEHICLE_IDLE : default
}
}
//==============================================================================
//==============================================================================
//
// Turrets
//
//==============================================================================
state TURRET_PUTAWAY
{
entrycommands
{
deactivateweapon righthand
}
states
{
TURRET_IDLE : default
}
}
state TURRET_START
{
// movetype anim
// action
// {
// turret_idle : default
// }
states
{
TURRET_PUTAWAY : PUTAWAYMAIN // Basic put weapon away move.
TURRET_IDLE : default
}
}
state TURRET_IDLE
{
movetype anim
action
{
turret_idle : default
}
states
{
// TURRET_USE : +USE
// GENERIC_USE : +USE
STAND : !IS_USING_TURRET
}
}
//state TURRET_USE
//{
// movetype anim
//
// entrycommands
// {
// usestuff
// }
//
// action
// {
// turret_idle : default
// }
//
// states
// {
// TURRET_IDLE : default
// }
//}
moschetto.tik :
Code:
TIKI
setup
{
scale 0.52 // Set default scale to 16/30.5 since world is in 16 units per foot and model is in cm's
path models/weapons/moscheto
skelmodel moscheto.skd
surface material1 shader moscheto
surface material2 shader moscheto
surface Clip shader moscheto
}
init
{
server
{
classname Weapon
weapontype smg
name "Moschetto"
rank 410 410
pickupsound mp40_snd_pickup
ammopickupsound mp40_snd_pickup_ammo
noammosound mp40_snd_noammo
// Holstering info
// holstertag "Bip01 Spine2"
// holsteroffset "8.0 -7.75 6.5"
// holsterangles "0 185 -25"
// holsterScale 1.0
// Primary fire type info
firetype bullet
ammotype "smg"
meansofdeath bullet
bulletcount 1
clipsize 40
startammo 20
ammorequired 1
// firedelay 0.12 //(500 rpm) In game seems slow for 500 rpm...
firedelay 0.095 //Adjusted test value
//========================================//
// WEAPON ACCURACY MODELLING //
//========================================//
// MP-40: Max Eff. Range is 50 yds with a muzzle velocity of 805 ft/s. (9mm Parabellum round)
bulletrange 4000 //the range at which bulletspread is applied
bulletspread 53 53 70 70 //minpitch minyaw maxpitch maxyaw
bulletdamage 23.5
firespreadmult 0.08 0.35 200 0.25 //add falloff cap maxtime
movementspeed 1.0
tracerfrequency 2
crosshair 1
airange short
// AI animation group info
weapongroup mp40
// DM Attributes
dmbulletcount 1
dmstartammo 200
dmammorequired 1
dmfiredelay 0.086
dmbulletrange 4000
dmbulletspread 38 38 50 50 //30 30 50 50 //25 25 48 48 //25 25 45 45 //50 50 89 89 //50 50 120 120
dmfirespreadmult 0.3 0.6 150 0.25 //0.3 0.8 150 0.4 //0.08 0.35 200 0.25 //0.3 0.8 200 0.4 original
dmbulletdamage 25 //26 //33
dmmovementspeed 0.96
dmcrosshair 1
// this is attached to the player during reload
cache models/ammo/mp40_clip.tik
}
client
{
cache tracer.spr
cache muzsprite.spr
cache corona_util.spr
cache models/fx/muzflash.tik
cache models/ammo/pistolshell.tik
}
}
animations
{
idle moscheto_dummy.skc
reload moscheto_reload.skc
{
server
{
10 surface clip +nodraw
48 surface clip -nodraw
last idle
}
client
{
entry sound mp40_snd_reload item
}
}
fire moscheto_fire.skc
{
server
{
entry shoot
}
client
{
entry stopaliaschannel mp40_snd_fire
entry sound mp40_snd_fire
// By now, the server has already fired the weapon, so it's
// ok to apply the view kick apon entry to avoid problems
// with multiple application on single frame animations.
////////////////////////////////////////////////////////////////////////////////////////
// View Kicking
//
// View Kicking works based on the assumptions that every weapon has its own tendencies to kick in
// a paticular fashion. In MOH we call then scatter patterns. Currently we have 2 scatter patterns which
// will be explained.
// Scatter Patterns:
// "V" - the cone. The longer you shoot the more random your shots will be in the horizontal axis.
// "T" - the T shape. The gun has a tendancy to push in a paticular direction.
//
//
// +-------------------------------------------- Scatter Pitch Min
// | +--------------------------------------- Scatter Pitch Max
// | | +------------------------------- Scatter Yaw Min
// | | | +--------------------------- Scatter Yaw Max
// | | | | +--------------------- The Recentering speed in fraction per second
// | | | | | +---------------- The Scatter Pattern
// | | | | | | +---------- The absolute pitch min/max
// | | | | | | | +------- The absolute yaw min/max
// | | | | | | | | +----- This is the pitch at which you loose all
// | | | | | | | | | control of the weapon and its behavior is
// | | | | | | | | | purely random.
// V V V V V V V V V
entry viewkick -1.65 -1.65 -0.12 0.12 1 "V" 8.5 8.6 16.0
// entry viewkick -1.65 -1.65 -0.04 0.04 1 "V" 8.5 8.6 16.0 (Nov 10 2001)
// entry viewkick -1.58 -1.58 -0.16 -0.16 0.9 "V" 8.5 8.6 16.0 (Thompson Nov 10 2001)
// muzzle flash
entry tagdlight tag_barrel 0.25 0.2 0.15 110 0.11
/////BIG ONE START
entry tagspawn tag_barrel
(
count 1
model models/fx/muzflash.tik
color 1.00 1.00 1.00
alpha 0.30
scale 0.45
life 0.05
offsetalongaxis 5 1 0
fade
randomroll
)
entry tagspawn tag_barrel
(
count 1
model muzsprite.spr
alpha 0.70
color 1.00 1.00 1.00
scale 0.50
life 0.05
offsetalongaxis 5 0 0
fade
randomroll
)
// entry tagspawn tag_barrel
// (
// count 1
// model corona_util.spr
// color 1.00 1.00 1.00
// scale 0.10
// life 0.05
// scalerate 11.00
// fade
// randomroll
// )
/////BIG ONE END
entry tagspawn tag_barrel
(
model vsssource.spr
count 3
alpha 0.40
color 0.50 0.50 0.50
spritegridlighting
scale 0.20
// life 0.90
life 0.30 //orig 1.0
scalerate 3.00
radius 6.00
velocity 23.00
accel 0.00 0.00 20.00
friction 3.00
fade
sphere
)
// entry tagspawn tag_barrel
// (
// count 1
// model muzsprite.spr
// color 1.00 1.00 1.00
// life 0.06
// scalerate 56.00
// velocity 2555.00
// offsetalongaxis 5 0 0
// angles 0 0 crandom -90
// avelocity 0 0 crandom -80
// scalemin 0.04
// scalemax 0.08
// fade
// )
// entry tagspawn tag_barrel
// (
// count 1
// model models/fx/muzflash.tik
// color 1.00 1.00 1.00
// scale 0.20
// life 0.05
// velocity 213.00
// offset random 2 0 0
// angles -180 0 0
// alignstretch 0.10
// )
// smoke puff
entry commanddelay 0.1 tagspawn tag_eject
(
count 1
model vsssource.spr
alpha 0.20
color 1.00 1.00 1.00
spritegridlighting
scale 0.10
// life 0.90
life 0.30 //orig 1.0
scalerate 14.00
velocity 79.00
offsetalongaxis 0 0 -12
angles 0 0 range 180 360
fade
)
// shell eject
entry commanddelay 0.1 tagspawn tag_eject
(
count 1
model models/ammo/pistolshell.tik
spawnrange 1024
scale .75
velocity 50
randvel crandom 10 crandom 10 random 20
emitterangles 0 0 0
avelocity crandom 90 crandom 90 0
accel 0 0 -800
physicsrate 20
life 2.0
fadedelay 1.7
collision
offsetalongaxis 0 0 -12
bouncefactor 0.2
bouncesoundonce snd_pistol_shell
)
}
}
guardfire_a moscheto.skc
{
client
{
entry stopaliaschannel mp40_snd_fire
entry sound mp40_snd_fire
// By now, the server has already fired the weapon, so it's
// ok to apply the view kick apon entry to avoid problems
// with multiple application on single frame animations.
////////////////////////////////////////////////////////////////////////////////////////
// View Kicking
//
// View Kicking works based on the assumptions that every weapon has its own tendencies to kick in
// a paticular fashion. In MOH we call then scatter patterns. Currently we have 2 scatter patterns which
// will be explained.
// Scatter Patterns:
// "V" - the cone. The longer you shoot the more random your shots will be in the horizontal axis.
// "T" - the T shape. The gun has a tendancy to push in a paticular direction.
//
//
// +-------------------------------------------- Scatter Pitch Min
// | +--------------------------------------- Scatter Pitch Max
// | | +------------------------------- Scatter Yaw Min
// | | | +--------------------------- Scatter Yaw Max
// | | | | +--------------------- The Recentering speed in fraction per second
// | | | | | +---------------- The Scatter Pattern
// | | | | | | +---------- The absolute pitch min/max
// | | | | | | | +------- The absolute yaw min/max
// | | | | | | | | +----- This is the pitch at which you loose all
// | | | | | | | | | control of the weapon and its behavior is
// | | | | | | | | | purely random.
// V V V V V V V V V
entry viewkick -1.75 -1.75 -0.04 0.04 1 "V" 8.5 8.6 16.0
// entry viewkick -1.2 -1.2 -0.2 0.2 1 "V" 3.0 1.0 1.6 (Colt .45 Pistol
// entry viewkick -2.5 -3.0 -0.8 0.8 (original setting)
// muzzle flash
entry tagdlight tag_barrel 0.25 0.2 0.05 110 0.11
/////BIG ONE START
entry tagspawn tag_barrel
(
count 1
model models/fx/muzflash.tik
color 1.00 1.00 1.00
scale 0.60
life 0.05
offsetalongaxis -5 0 0
fade
randomroll
)
entry tagspawn tag_barrel
(
count 1
model muzsprite.spr
alpha 0.70
color 1.00 1.00 1.00
scale 0.60
life 0.05
offsetalongaxis 3 0 0
fade
randomroll
)
entry tagspawn tag_barrel
(
count 1
model corona_util.spr
color 1.00 1.00 1.00
scale 0.10
life 0.05
scalerate 11.00
fade
randomroll
)
/////BIG ONE END
entry tagspawn tag_barrel
(
model vsssource.spr
count 3
alpha 0.40
color 0.50 0.50 0.50
scale 0.20
life 0.90
scalerate 3.00
radius 6.00
velocity 23.00
accel 0.00 0.00 20.00
friction 3.00
fade
sphere
)
entry tagspawn tag_barrel
(
count 1
model muzsprite.spr
color 1.00 1.00 1.00
life 0.06
scalerate 56.00
velocity 2555.00
offsetalongaxis 5 0 0
angles 0 0 crandom -90
avelocity 0 0 crandom -80
scalemin 0.04
scalemax 0.08
fade
)
entry tagspawn tag_barrel
(
count 1
model models/fx/muzflash.tik
color 1.00 1.00 1.00
scale 0.20
life 0.05
velocity 213.00
offset random 2 0 0
angles -180 0 0
alignstretch 0.10
)
// shell eject
entry commanddelay 0.1 tagspawn tag_eject
(
count 1
model models/ammo/pistolshell.tik
spawnrange 1024
scale .75
velocity 50
randvel crandom 10 crandom 10 random 20
emitterangles 0 0 0
avelocity crandom 90 crandom 90 0
accel 0 0 -800
physicsrate 20
life 2.0
fadedelay 1.7
collision
offsetalongaxis 0 0 -12
bouncefactor 0.2
bouncesoundonce snd_pistol_shell
)
// smoke puff
entry commanddelay 0.1 tagspawn tag_eject
(
count 1
model vsssource.spr
alpha 0.20
color 1.00 1.00 1.00
scale 0.10
life 0.90
scalerate 14.00
velocity 79.00
offsetalongaxis 0 0 -12
angles 0 0 range 180 360
fade
)
}
}
guardfire_b moscheto.skc
{
client
{
entry stopaliaschannel mp40_snd_fire
entry sound mp40_snd_fire
// By now, the server has already fired the weapon, so it's
// ok to apply the view kick apon entry to avoid problems
// with multiple application on single frame animations.
////////////////////////////////////////////////////////////////////////////////////////
// View Kicking
//
// View Kicking works based on the assumptions that every weapon has its own tendencies to kick in
// a paticular fashion. In MOH we call then scatter patterns. Currently we have 2 scatter patterns which
// will be explained.
// Scatter Patterns:
// "V" - the cone. The longer you shoot the more random your shots will be in the horizontal axis.
// "T" - the T shape. The gun has a tendancy to push in a paticular direction.
//
//
// +-------------------------------------------- Scatter Pitch Min
// | +--------------------------------------- Scatter Pitch Max
// | | +------------------------------- Scatter Yaw Min
// | | | +--------------------------- Scatter Yaw Max
// | | | | +--------------------- The Recentering speed in fraction per second
// | | | | | +---------------- The Scatter Pattern
// | | | | | | +---------- The absolute pitch min/max
// | | | | | | | +------- The absolute yaw min/max
// | | | | | | | | +----- This is the pitch at which you loose all
// | | | | | | | | | control of the weapon and its behavior is
// | | | | | | | | | purely random.
// V V V V V V V V V
entry viewkick -1.75 -1.75 -0.04 0.04 1 "V" 8.5 8.6 16.0
// entry viewkick -1.2 -1.2 -0.2 0.2 1 "V" 3.0 1.0 1.6 (Colt .45 Pistol
// entry viewkick -2.5 -3.0 -0.8 0.8 (original setting)
// muzzle flash
entry tagdlight tag_barrel 0.25 0.2 0.05 110 0.11
/////BIG ONE START
entry tagspawn tag_barrel
(
count 1
model models/fx/muzflash.tik
color 1.00 1.00 1.00
scale 0.60
life 0.05
offsetalongaxis -5 0 0
fade
randomroll
)
entry tagspawn tag_barrel
(
count 1
model muzsprite.spr
alpha 0.70
color 1.00 1.00 1.00
scale 0.60
life 0.05
offsetalongaxis 3 0 0
fade
randomroll
)
entry tagspawn tag_barrel
(
count 1
model corona_util.spr
color 1.00 1.00 1.00
scale 0.10
life 0.05
scalerate 11.00
fade
randomroll
)
/////BIG ONE END
entry tagspawn tag_barrel
(
model vsssource.spr
count 3
alpha 0.40
color 0.50 0.50 0.50
scale 0.20
life 0.90
scalerate 3.00
radius 6.00
velocity 23.00
accel 0.00 0.00 20.00
friction 3.00
fade
sphere
)
entry tagspawn tag_barrel
(
count 1
model muzsprite.spr
color 1.00 1.00 1.00
life 0.06
scalerate 56.00
velocity 2555.00
offsetalongaxis 5 0 0
angles 0 0 crandom -90
avelocity 0 0 crandom -80
scalemin 0.04
scalemax 0.08
fade
)
entry tagspawn tag_barrel
(
count 1
model models/fx/muzflash.tik
color 1.00 1.00 1.00
scale 0.20
life 0.05
velocity 213.00
offset random 2 0 0
angles -180 0 0
alignstretch 0.10
)
// shell eject
entry commanddelay 0.1 tagspawn tag_eject
(
count 1
model models/ammo/pistolshell.tik
spawnrange 1024
scale .75
velocity 50
randvel crandom 10 crandom 10 random 20
emitterangles 0 0 0
avelocity crandom 90 crandom 90 0
accel 0 0 -800
physicsrate 20
life 2.0
fadedelay 1.7
collision
offsetalongaxis 0 0 -12
bouncefactor 0.2
bouncesoundonce snd_pistol_shell
)
// smoke puff
entry commanddelay 0.1 tagspawn tag_eject
(
count 1
model vsssource.spr
alpha 0.20
color 1.00 1.00 1.00
scale 0.10
life 0.90
scalerate 14.00
velocity 79.00
offsetalongaxis 0 0 -12
angles 0 0 range 180 360
fade
)
}
}
}
/*QUAKED playerweapon_german_mp40 (0.0 0.0 1.0) (-8 -8 -8) (8 8 8)
German submachinegun - MP40
*/
anims_Moschetto.txt
Code:
animations
{
$path models/human/animation
//========================
// Reload
//========================
moschetto_reload viewmodel/MP40/reload_mp40_stand.skc crossblend 0.3
{
server
{
first reloadweapon // tell the weapon that we're reloading
10 attachmodel models/ammo/mp40_clip.tik tag_weapon_left // put the ammo clip in the left hand
48 removeattachedmodel tag_weapon_left 0 models/ammo/mp40_clip.tik // remove the clip model from the left hand
64 weaponcommand mainhand clip_fill // put the clip ammo into the gun
}
}
//========================
// Walking/Cautious
//========================
moschetto_stand_walk_fwd multiplayer/mp_rifle_curious_walk_forward.skc //autosteps_walk
moschetto_stand_walk_back multiplayer/mp_rifle_curious_walk_backwards.skc //autosteps_walk
moschetto_stand_walk_left multiplayer/mp_rifle_curious_walk_left.skc //autosteps_walk
moschetto_stand_walk_right multiplayer/mp_rifle_curious_walk_right.skc //autosteps_walk
//========================
// Jogging/Relaxed
//========================
moschetto_stand_run_fwd weapon_rifle/walks_runs/rifle_jog.skc autosteps_run
moschetto_stand_run_back multiplayer/mp_rifle_jog_back.skc autosteps_run
moschetto_stand_run_left multiplayer/mp_rifle_run_left.skc autosteps_run
moschetto_stand_run_right multiplayer/mp_rifle_run_right.skc autosteps_run
//========================
// Standing
//========================
moschetto_stand_idle multiplayer/mp_rifle_stand_curious.skc crossblend 0.2
//========================
// Crouching
//========================
moschetto_crouch_idle weapon_rifle/crouch/rifle_crouch.skc crossblend 0.2
moschetto_crouch_walk_fwd viewmodel/mp40/walk_mp40_crouch.skc crossblend 0.2 //autosteps_walk
moschetto_crouch_walk_back multiplayer/mp_rifle_crouch_walk_back.skc crossblend 0.2 //autosteps_walk
moschetto_crouch_walk_left multiplayer/mp_rifle_crouch_walk_left.skc crossblend 0.2 //autosteps_walk
moschetto_crouch_walk_right multiplayer/mp_rifle_crouch_walk_right.skc crossblend 0.2 //autosteps_walk
moschetto_crouch_run_fwd multiplayer/mp_rifle_crouchrun.skc crossblend 0.1 autosteps_run
moschetto_crouch_run_back viewmodel/mp40/run_mp40_crouch.skc crossblend 0.1 autosteps_run
moschetto_crouch_run_left weapon_rifle/walks_runs/rifle_crouchrun_left.skc crossblend 0.1 autosteps_run
moschetto_crouch_run_right weapon_rifle/walks_runs/rifle_crouchrun_right.skc crossblend 0.1 autosteps_run
//========================
// smg Firing
//========================
moschetto_stand_fire viewmodel/mp40/mp40_stand_fire.skc crossblend 0.05
{
server
{
entry fire
}
}
moschetto_stand_run_fire viewmodel/mp40/firerun_mp40_stand.skc crossblend 0.05
{
server
{
entry fire
}
}
moschetto_stand_walk_fire viewmodel/mp40/mp40_stand_fire.skc crossblend 0.05
{
server
{
entry fire
}
}
moschetto_crouch_fire viewmodel/mp40/mp40_stand_fire.skc crossblend 0.05
{
server
{
entry fire
}
}
moschetto_crouch_run_fire viewmodel/mp40/firerun_mp40_stand.skc crossblend 0.05
{
server
{
entry fire
}
}
//===============================
// Raise Animations for moschetto
//===============================
moschetto_stand_raise viewmodel/mp40/raise_mp40_stand.skc
{
server
{
// first activatenewweapon tommyhand // Tommyhand is currently not used
first activatenewweapon lefthand
}
client
{
enter sound snd_rifle_pullout
}
}
// THESE ARE ALL PLACEHOLDER ANIMATIONS!!!!!
moschetto_crouch_raise viewmodel/mp40/raise_mp40_stand.skc
{
server
{
// first activatenewweapon tommyhand // Tommyhand is currently not used
first activatenewweapon lefthand
}
client
{
enter sound snd_rifle_pullout
}
}
//========================
// Lower
//========================
// THESE ARE ALL PLACEHOLDER ANIMATIONS!!!!!
$path models/human/protoanimations
moschetto_stand_lower lower_rifle_standplayer.skc
{
server
{
last deactivateweapon righthand
}
client
{
enter sound snd_rifle_putaway
}
}
moschetto_crouch_lower lower_rifle_standplayer.skc
{
server
{
last deactivateweapon righthand
}
client
{
enter sound snd_rifle_putaway
}
}
//========================
// Jumping & Falling
//========================
moschetto_jump_takeoff jump_takeoff.skc crossblend 0.1
{
server
{
first ai_event footstep
}
client
{
first footstep "Bip01 R Foot" run
}
}
moschetto_jump_run_takeoff jump_takeoff.skc crossblend 0.1
{
server
{
first ai_event footstep
}
client
{
first footstep "Bip01 R Foot" run
}
}
moschetto_fall jump_stretch_loop.skc crossblend 0.2
moschetto_land jump_land.skc crossblend 0.1
{
client
{
first landing
}
}
moschetto_land_hard jump_land.skc crossblend 0.1
{
client
{
first landing
}
}
//========================
// Pain
//========================
moschetto_stand_hit_uppertorso02 jump_land.skc crossblend 0.1
moschetto_crouch_hit_uppertorso02 jump_tuck_loop.skc crossblend 0.1
//========================
// Misc
//========================
moschetto_run_into_wall jump_land.skc crossblend 0.1
}
fps_anims_smg.txt
Code:
animations
{
$path models/human/animation
//========================
// Thompson Anims
//========================
thompson_idle1 viewmodel/smg/idle_tommy_stand.skc crossblend 0.1 weight 1.0
thompson_fire viewmodel/smg/fire_tommy_stand.skc crossblend 0
thompson_reload viewmodel/smg/reload_tommy_stand.skc crossblend 0.3
thompson_pullout viewmodel/smg/raise_tommy_stand.skc
{
client
{
enter sound snd_rifle_pullout
}
}
$path models/human/protoanimations
thompson_putaway lower_rifle_standplayer.skc
{
client
{
enter sound snd_rifle_putaway
}
}
$path models/human/animation
//========================
// MP40 Anims
//========================
mp40_idle1 viewmodel/mp40/mp40_stand_idle.skc crossblend 0.25 weight 1.0
mp40_idle2 viewmodel/mp40/mp40_stand_idle_a.skc crossblend 0.25 weight 1.0 dontrepeate
mp40_idle3 viewmodel/mp40/mp40_stand_idle_b.skc crossblend 0.25 weight 1.0
mp40_idle4 viewmodel/mp40/mp40_stand_idle_c.skc crossblend 0.25 weight 1.0
mp40_fire viewmodel/mp40/mp40_stand_fire.skc crossblend 0.05
mp40_reload viewmodel/MP40/reload_mp40_stand.skc crossblend 0.1
mp40_pullout viewmodel/mp40/raise_mp40_stand.skc
{
client
{
enter sound snd_rifle_pullout
}
}
$path models/human/protoanimations
mp40_putaway lower_rifle_standplayer.skc
{
client
{
enter sound snd_rifle_putaway
}
}
$path models/human/animation
//========================
// Moschetto Anims
//========================
moschetto_idle viewmodel/moschetto/idle_fps.skc crossblend 0.25 weight 1.0
moschetto_fire viewmodel/moschetto/fire_fps.skc crossblend 0.05
moschetto_reload viewmodel/moschetto/reload_fps.skc crossblend 0.1
moschetto_pullout viewmodel/moschetto/pullout_fps.skc
{
client
{
enter sound snd_rifle_pullout
}
}
moschetto_putaway viewmodel/moschetto/putaway_fps.skc
{
client
{
enter sound snd_rifle_putaway
}
}
$path models/human/animation
}