WeaponCtrJump: Difference between revisions

From Eternity Wiki
Jump to navigationJump to search
(→‎Example: Ordered it a bit)
Line 37: Line 37:
===Example===
===Example===
The following example modifies the Doom pistol to go into recharging animation after each ten shots, IF there is ammo left:
The following example modifies the Doom pistol to go into recharging animation after each ten shots, IF there is ammo left:
  '''framedelta''' { '''name'''=S_PISTOL3; '''action'''=[[WeaponSetCtr]](0,1,add); '''tics'''=0; '''nextframe'''=S_PISTOL3TESTAMMO}
  '''framedelta'''             { '''name'''=S_PISTOL3; '''action'''=[[WeaponSetCtr]](0,1,add); '''tics'''=0; '''nextframe'''=S_PISTOL3TESTAMMO}
  '''frame''' S_PISTOL3TESTAMMO {'''cmp'''="PISG|2|*|0|[[CheckReload]]|@next"}       # CheckReload so it doesn't recharge when no ammo
  '''frame''' S_PISTOL3TESTCTR {'''cmp'''="PISG|2|*|0|''WeaponCtrJump''(S_PISTOLRECHARGE,equal,10,0,weapon)|@next"} # use 0 tics so duration is always 0
# CheckReload so it doesn't recharge when no ammo
  '''frame''' S_PISTOL3NORMAL {'''cmp'''="PISG|2|*|4|*|S_PISTOL4"} # same form as ''original'' S_PISTOL3.
  '''frame''' S_PISTOL3TESTAMMO { '''cmp'''="PISG|2|*|0|[[CheckReload]]                                     |@next"}  
# use 0 tics so duration is always 0   
  '''frame''' S_PISTOL3TESTCTR { '''cmp'''="PISG|2|*|0|''WeaponCtrJump''(S_PISTOLRECHARGE,equal,10,0,weapon)|@next"}
# same form as ''original'' S_PISTOL3.
  '''frame''' S_PISTOL3NORMAL   { '''cmp'''="PISG|2|*|4|*                                               |S_PISTOL4"}
# reset counter if recharge happens.
'''frame''' S_PISTOLRECHARGE  { '''cmp'''="PISG|2|*|4|WeaponSetCtr(0,0,assign)                        |S_PISTOLREC1"} 
   
   
'''frame''' S_PISTOLRECHARGE {'''cmp'''="PISG|2|*|4|WeaponSetCtr(0,0,assign)|S_PISTOLREC1"}  # reset counter if recharge happens.
  # Add S_PISTOLREC1 and subsequent frames here.
  # Add S_PISTOLREC1 and subsequent frames here.
==See also==
==See also==
*[[List of codepointers]]
*[[List of codepointers]]
[[Category:Codepointers]]
[[Category:Codepointers]]

Revision as of 04:27, 7 May 2011

Player weapon codepointer. Parameterized codepointer.

Usage:
WeaponCtrJump(statenum, checktype, value, cnum, psprnum)

Effect

This codepointer is used for frame scripting within a player weapons' frames. It's not designed to affect non-player game world objects or the player avatar. It's used on the frames of guns that typically appear in front of the game screen.

In Eternity each player weapon has three (or eight in the development versions) counters that can be edited and conditionally checked by codepointers to achieve scripted effects.

This codepointer compares one of the counters with a value or another counter, and jumps instantly to frame statenum if the condition is met. Otherwise, it will work normally and jump to next frame after frame's tics duration. This can be used for any of two weapon sprite types: normal gun, or muzzle flash.

Arguments

  • args0: statenum: name or Dehacked number of frame to jump to.
  • args1: checktype: what type of comparison to apply, depending on the number or mnemonic used.
Numbers 0-6 are used to compare a counter value with a constant
0 less
1 lessorequal
2 greater
3 greaterorequal
4 equal
5 notequal
6 and (bitwise operation): if result is nonzero, condition is passed.
Numbers 7-13 are used to compare a counter value with another counter's value:
7 less_counter
8 lessorequal_counter
9 greater_counter
10 greaterorequal_counter
11 equal_counter
12 notequal_counter
13 and_counter.
  • args2: value: constant value or counter number (0-2 or 0-7 in development versions) to compare against (right operand).
  • args3: cnum: counter number (0-2 or 0-7) to compare (left operand).
  • args4: psprnum: what gun sprite type this function affects:
0 weapon: affect main weapon sprite
1 flash: affect muzzle flash sprite (which appears overlapping the main weapon sprite).

Example

The following example modifies the Doom pistol to go into recharging animation after each ten shots, IF there is ammo left:

framedelta              { name=S_PISTOL3; action=WeaponSetCtr(0,1,add); tics=0; nextframe=S_PISTOL3TESTAMMO}

# CheckReload so it doesn't recharge when no ammo 
frame S_PISTOL3TESTAMMO { cmp="PISG|2|*|0|CheckReload                                      |@next"} 

# use 0 tics so duration is always 0     
frame S_PISTOL3TESTCTR  { cmp="PISG|2|*|0|WeaponCtrJump(S_PISTOLRECHARGE,equal,10,0,weapon)|@next"}

# same form as original S_PISTOL3. 
frame S_PISTOL3NORMAL   { cmp="PISG|2|*|4|*                                                |S_PISTOL4"}

# reset counter if recharge happens.
frame S_PISTOLRECHARGE  { cmp="PISG|2|*|4|WeaponSetCtr(0,0,assign)                         |S_PISTOLREC1"}  

# Add S_PISTOLREC1 and subsequent frames here.

See also