# DOFIGHTSTALENTS.INC
# simple extract of the talents effects from the dofight.inc procedure
?>
switch ($ch) {
# to be implemented :
# knockdown tests and effects DONE but for positioning
# wounds DONE
# karma use DONE
# different battle end flags DONE
# level of success table
# career restriction DONE
# magic system DONE
# magic objects
# poison
# crowd psychology effects
# unarmed combat
# shooting / throwing weapons
# relative position of fighters (needed ?)
# double weapon use
# Acrobatic Strike
case "1":
$physdefmodadv[$i][1] = $physdefmodadv[$i][1] + $talentsrankadv[$i][1];
$attackstepadv[$i] = $talentstep;
$attackreplacedadv[$i][1] = true;
break;
# Air Dance
case "2" :
$initadv[$i] = $talenttest;
if ($initadv[$i] >= $initadv[$j]*2) {
$nbattacks++;
$initordernew[$nbattacks] = $i;
}
# new order of initiative
for ($plnew=1; $plnew<=$nbadv; $plnew++) {
$max = 0;
for ($jnew=1; $jnew<=$nbadv; $jnew++) {
if ($initadv[$jnew] > $max) {
# echo "init of ".$j." = ".$initadv[$j]."
";
$n = $jnew;
$max = $initadv[$jnew];
}
}
$initordernew[$plnew] = $n;
$initadv[$n] = -1;
# echo "init place ".$pl." = ".$nameadv[$initorder[$pl]]."
";
}
break;
# Anticipate Blow
case "3" :
$attackmodadv[$i][1] = $attackmodadv[$i][1] + $talentsrankadv[$i][3];
$physdefmodadv[$i][1] = $physdefmodadv[$i][1] + $talentsrankadv[$i][3];
break;
# Astral Sight
case "4" :
# useless without magic objets or creatures
break;
# Avoid Blow
case "5" :
$attackcanbecanceled[$j][1] = true;
$attacksmaller[$j][1] = $talentstep;
break;
# Battle Shout
case "6" :
$attackmodadv[$j][1] = $attackmodadv[$j][1] - $talentsrankadv[$i][6];
$damagemodadv[$j][1] = $damagemodadv[$j][1] - $talentsrankadv[$i][6];
$physdefmodadv[$j][1] = $physdefmodadv[$j][1] - $talentsrankadv[$i][6];
$spelldefmodadv[$j][1] = $spelldefmodadv[$j][1] - $talentsrankadv[$i][6];
$alltalmodadv[$j][1] = $alltalmodadv[$j][1] - $talentsrankadv[$i][6];
break;
# Called Shot
case "7" :
# useless without shooting weapons
break;
# Charge
case "8" :
$damagestepadv[$i] = $talentstep;
$damagereplaced[$i][1] == true;
# MISSING : need previous round charging on the enemy
break;
# Claw Frenzy
case "9" :
# need unarmed combat
break;
# Claw Shape
case "10" :
# need unarmed combat
break;
# Cobra Strike
case "11" :
$initadv[$i] = $talenttest;
# new order of initiative
for ($plnew=1; $plnew<=$nbadv; $plnew++) {
$max = 0;
for ($jnew=1; $jnew<=$nbadv; $jnew++) {
if ($initadv[$jnew] > $max) {
# echo "init of ".$j." = ".$initadv[$j]."
";
$n = $jnew;
$max = $initadv[$jnew];
}
}
$initordernew[$plnew] = $n;
$initadv[$n] = -1;
# echo "init place ".$pl." = ".$nameadv[$initorder[$pl]]."
";
}
$attackmodadv[$i][1] = $attackmodadv[$i][1] + $talentsrankadv[$i][11];
break;
# Cold Purify
case "12" :
# useless without poison
break;
# Conceal Weapon
case "13" :
break;
# Crushing Blow
case "14" :
$damagemodadv[$i][1] = $damagemodadv[$i][1] + $talentsrankadv[$i][14] + $karmabonus;
# MISSING : +3 bonus if using (mastering?) battle shout
break;
# Dead Fall
case "15" :
# needed to avoid being killed in battles ?
break;
# Detect Weapon
case "16" :
# needed against conceal weapon
break;
# Disarm
case "17" :
$attackstepadv[$i] = $talentstep;
$attackreplacedadv[$i][1] = true;
# MISSING : special treatment for lost weapon
break;
# Down Strike
case "18" :
$damagestepadv[$i] = $talentstep;
$damagereplaced[$i][1] == true;
# MISSING : need of position above enemy
break;
# Durability
case "19" :
# implemented / no battle effect
break;
# Eagle Eye
case "20" :
# useless without shooting weapons
break;
# Earth Skin
case "21" :
$spelldefmodadv[$i][1] = $spelldefmodadv[$i][1] - $talentsrankadv[$i][21];
$deathratingadv[$i] = $deathratingadv[$i] + $talentsrankadv[$i][21];
$talentnbuseadv[$i][21] = 0;
# MISSING : check use (mastering ?) of wood skin
break;
# Enhanced Matrix
case "22" :
# useless without magic system
break;
# Fence
case "23" :
# no battle effect
break;
# Fireblood
case "24" :
$damageadv[$i] = $damageadv[$i] - EDice($attadv[$i][3]);
if ($damageadv[$i] < 0) { $damageadv[$i] = 0; }
break;
# First Impression
case "25" :
# need design of crowd psychology effects
break;
# Fire arrow
case "26" :
# useless without shooting weapons
break;
# Forge Blade
case "27" :
# no battle effect
break;
# Frighten
case "28" :
for ($pile=1; $pile<=$talentsrankadv[$i][6]; $pile++) {
$noactionadv[$j][$pile] = true;
}
break;
# Gliding Stride
case "29" :
# need to take into account battle position
break;
# Graceful Exit
case "30" :
# need design of crowd psychology effects
break;
# Great Leap
case "31" :
# need to take into account battle position
break;
# Haggle
case "32" :
# no battle effect
break;
# Heartening Laugh
case "33" :
break;
# Hold Thread
case "34" :
# useless without magic system
break;
# Karma Ritual
case "35" :
# no battle effect
break;
# Lasting Impression
case "36" :
# need design of crowd psychology effects
break;
# Life Check
case "37" :
if ($damageadv[$i] >= $deathratingadv[$i]) {
$recovadv[$i]++;
$damageadv[$i] = $damageadv[$i] - EDice($attadv[$i][3]);
if ($damageadv[$i] < 0) { $damageadv[$i] = 0; }
}
break;
# Lion Heart
case "38" :
break;
# Maneuver
case "39" :
$noactionadv[$i][1] = true;
$physicaldefreplaced[$i][1] = true;
$physicaldefadv[$i] = $talenttest;
$attackmodadv[$i][2] = $attackmodadv[$i][2] + $talentsrankadv[$i][39];
$damagemodadv[$i][2] = $damagemodadv[$i][2] + $talentsrankadv[$i][39];
# MISSING : check the character avoids attacks during the round
break;
# Melee Weapons
case "40" :
$attackmodadv[$i][1] = $attackmodadv[$i][1] + $talentsrankadv[$i][40];
# used by default ?
break;
# Missile Weapons
case "41" :
# useless without shooting weapons
break;
# Momentum Attack
case "42" :
$nbattacks++;
$initordernew[$nbattacks] = $i;
# need to check for extraordinary success
break;
# Poison Resistance
case "43" :
# useless without poison
break;
# Resist Taunt
case "44" :
break;
# Riposte
case "45" :
$attackcanbecanceled[$j][1] = true;
$attackriposte[$j][1] = $talentstep;
# MISSING : attack gained is of level of test result
break;
# Second Attack
case "46" :
$nbattacks++;
$initordernew[$nbattacks] = $i;
break;
# Second Weapon
case "47" :
$nbattacks++;
$initordernew[$nbattacks] = $i;
# need to implement second attack (or supplementary attacks)
# need to implement more than one readied weapon
break;
# Sense Poison
case "48" :
# useless without poison
break;
# Spellcasting
case "49" :
$spelladv[$i] = $doingspell;
# useless without magic system
break;
# Spell Matrix
case "50" :
# useless without magic system
break;
# Srint
case "51" :
# need to take into account battle position
break;
# Surprise Strike
case "52" :
$attackstepadv[$i] = $talentstep;
$attackreplacedadv[$i][1] = true;
$damagemodadv[$i][1] = $damagemodadv[$i][1] + 7;
$talentnbuseadv[$i][52] = 0;
# MISSING : use of karma dice
break;
# Swift Kick
case "53" :
# need unarmed combat
break;
# Taunt
case "54" :
for ($pile=1; $pile<=$talentsrankadv[$i][6]; $pile++) {
$attackmodadv[$j][$pile] = $attackmodadv[$j][$pile] - $talentsrankadv[$i][54];
$damagemodadv[$j][$pile] = $damagemodadv[$j][$pile] - $talentsrankadv[$i][54];
$notalentadv[$i][$pile] = true;
}
break;
# Thread Weaving
case "55" :
# no battle effect (contrary to original earthdawn system
break;
# Throwing Weapons
case "56" :
# useless without shooting weapons
break;
# Tiger Spring
case "57" :
$newinitiativeadv[$i] = $initiativeadv[$i] + $talentsrankadv[$i][57];
$initadv[$i] = EDice($newinitiativeadv[$i]);
# new order of initiative
for ($plnew=1; $plnew<=$nbadv; $plnew++) {
$max = 0;
for ($jnew=1; $jnew<=$nbadv; $jnew++) {
if ($initadv[$jnew] > $max) {
# echo "init of ".$j." = ".$initadv[$j]."
";
$n = $jnew;
$max = $initadv[$jnew];
}
}
$initordernew[$plnew] = $n;
$initadv[$n] = -1;
# echo "init place ".$pl." = ".$nameadv[$initorder[$pl]]."
";
}
break;
# True Shot
case "58" :
# useless without shooting weapons
break;
# Unarmed Combat
case "59" :
# need unarmed combat
break;
# Unshakable Earth
case "60" :
# need implementation of the knockdown test and effects
break;
# Willforce
case "61" :
# useless without magic system
break;
# Wood Skin
case "62" :
$unconratingadv[$i] = $unconratingadv[$i] + $talenttest;
$deathratingadv[$i] = $deathratingadv[$i] + $talenttest;
$talentnbuseadv[$i][62] = 0;
# MISSING : use of one recovery test canceled (?)
break;
# Wound Balance
case "63" :
# need implementation of the knockdown test and effects
break;
}
?>