changelog

This commit is contained in:
John W. C. McNabb 2005-03-29 17:41:09 +00:00
parent 4c3c2fc6af
commit 4775cb3bbc
31 changed files with 160 additions and 33 deletions

View file

@ -12,6 +12,7 @@ experience=39
level=1
alignment=lawful
advanceto=Longbowman
undead_variation=archer
cost=15
usage=archer
unit_description= _ "Immersed from childhood in the ways of archery, the young Bowmen are the most common ranged combatants in Wesnothian armies. They do not undergo as rigorous a training as the spearman or heavy infantry, because their battle tactic requires more finess than brute strength."

View file

@ -1,4 +1,3 @@
[unit]
id=Drake Burner
name= _ "Drake Burner"
@ -13,6 +12,7 @@ experience=43
level=1
alignment=neutral
advanceto=Fire Drake,Drake Flare
undead_variation=winged
cost=21
usage=archer
unit_description= _ "Not only can a Drake Burner wield its claws with deadly skill, but it still possesses the fire-breathing abilities of its remote ancestors. Enemies would be well advised to keep their distance. The most skilled Burners will often go on to become Fire Drakes who seek to master their internal fire, or Drake Flares who aspire to be leaders of their kind."
@ -69,4 +69,4 @@ get_hit_sound=groan.wav
image_diagonal="projectiles/fireball-nw.png"
[/missile_frame]
[/attack]
[/unit]
[/unit]

View file

@ -1,4 +1,3 @@
[unit]
id=Drake Clasher
name= _ "Drake Clasher"
@ -13,6 +12,7 @@ experience=40
level=1
alignment=neutral
advanceto=Drake Gladiator,Drake Slasher
undead_variation=winged
cost=19
usage=fighter
unit_description= _ "With their stumpy vestigial wings and inability to use their great internal fire as a weapon some may think that these Drakes are disadvantaged; they would be mistaken. To compensate they have become great craftsmen that can fabricate weapons with emerald edges, and wear heavy armour. The Clashers' weapons of choice are the sword and spear, which they use to great effect. The greatest Clashers can become Drake Gladiators or Slashers."

View file

@ -1,4 +1,3 @@
[unit]
id=Drake Fighter
name= _ "Drake Fighter"
@ -13,6 +12,7 @@ experience=38
level=1
alignment=neutral
advanceto=Drake Warrior
undead_variation=winged
cost=17
usage=fighter
unit_description= _ "Drake Fighters wield curved scimitars with deadly skill, and possess the fire breathing skills of their ancestors. The most skilled Fighters go on to join the ranks of the elite Drake Warriors."
@ -74,4 +74,4 @@ get_hit_sound=groan.wav
[/missile_frame]
[/attack]
[/unit]
[/unit]

View file

@ -1,4 +1,3 @@
[unit]
id=Fire Drake
name= _ "Fire Drake"
@ -13,6 +12,7 @@ experience=80
level=2
alignment=neutral
advanceto=Inferno Drake
undead_variation=winged
cost=37
usage=archer
unit_description= _ "The great fire drakes equip themselves with silver plated armour to defend themselves from serious injuries. Although their melee technique is primitive, they have mastered their internal fire and are to be feared. The most ferocious Fire Drakes become the flying configurations known as Drake Infernos."
@ -65,4 +65,4 @@ get_hit_sound=groan.wav
[/missile_frame]
[/attack]
[/unit]
[/unit]

View file

@ -1,4 +1,3 @@
[unit]
id=Drake Flameheart
name= _ "Drake Flameheart"
@ -15,6 +14,7 @@ level=3
alignment=neutral
ability=leadership
advanceto=null
undead_variation=winged
cost=65
usage=mixed fighter
unit_description= _ "There is an old saying that, 'The generals in Drake armies have fire in their veins instead of blood'. Nobody would doubt the truth in that saying after facing these towering creatures of sheer devastation... However, between their crackling flames and their wicked swords, few who meet them survive to confirm this saying."
@ -75,4 +75,4 @@ get_hit_sound=groan.wav
image_diagonal="projectiles/fireball-big-nw.png"
[/missile_frame]
[/attack]
[/unit]
[/unit]

View file

@ -1,4 +1,3 @@
[unit]
id=Drake Flare
name= _ "Drake Flare"
@ -15,6 +14,7 @@ experience=80
level=2
alignment=neutral
advanceto=Drake Flameheart
undead_variation=winged
cost=37
usage=mixed fighter
unit_description= _ "Drake Flares aspire to be leaders of their kind. While their mastery of their internal fire is not as great as some of their kin these Drakes have broader aspirations. They are skilled with swords, and they aspire to be the greatest of their kind."
@ -65,4 +65,4 @@ get_hit_sound=groan.wav
image_diagonal="projectiles/fireball-nw.png"
[/missile_frame]
[/attack]
[/unit]
[/unit]

View file

@ -1,4 +1,3 @@
[unit]
id=Drake Gladiator
name= _ "Drake Gladiator"
@ -14,6 +13,7 @@ level=2
alignment=neutral
advanceto=null
#advanceto=Drake Omnirage
undead_variation=winged
cost=35
usage=fighter
unit_description= _ "With their stumpy vestigial wings and inability to use their great internal fire as a weapon some may think that these Drakes are disadvantaged, they would be mistaken. Drakes Gladiators protect their vulnerable hides with thick brass armour and they arm themselves with as many emerald edged weapons as possible to fend off whatever opponents may await them."
@ -76,4 +76,4 @@ get_hit_sound=groan.wav
[/sound]
[/attack]
[/unit]
[/unit]

View file

@ -1,4 +1,3 @@
[unit]
id=Drake Glider
name= _ "Drake Glider"
@ -13,7 +12,7 @@ experience=35
level=1
alignment=neutral
advanceto=Sky Drake
#advanceto=null
undead_variation=winged
cost=15
usage=scout
unit_description= _ "Drake Gliders wear as little armour as possible so they can quickly escape their foes when they leave their caves. These Drakes are competent fighters, possessing the internal fire common to many of their kin. Gliders can also effectively use their speed to viciously slam their opponents into submission. The best gliders can look forward to being accepted into the ranks of the high flying Sky Drakes."

View file

@ -1,4 +1,3 @@
[unit]
id=Inferno Drake
name= _ "Inferno Drake"
@ -13,6 +12,7 @@ experience=500
level=3
alignment=neutral
advanceto=null
undead_variation=winged
cost=65
usage=archer
unit_description= _ "The flying configurations known as Drake Infernos wear massive gold armour that is almost impenetrable. These drakes are also practically immune to fire as they have adjusted to hiding in the cones of volcanoes. Drake Infernos have utterly mastered their internal fire, and rival their predecessors the Dragons in their ability to use it."
@ -65,4 +65,4 @@ get_hit_sound=groan.wav
[/missile_frame]
[/attack]
[/unit]
[/unit]

View file

@ -13,6 +13,7 @@ level=2
alignment=neutral
#advanceto=Hurricane Drake,Tornado drake
advanceto=null
undead_variation=winged
cost=25
usage=scout
unit_description= _ "Sky drakes are truly the kings of the sky. Using their momentum and fire breath as weapons these drakes are the bane of many. They can swiftly swoop down on prey, and are usually long gone before anyone can stop them."

View file

@ -13,6 +13,7 @@ experience=500
level=2
alignment=neutral
advanceto=null
undead_variation=winged
cost=35
usage=fighter
unit_description= _ "With their stumpy vestigial wings and inability to use their great internal fire as a weapon some may think that these Drakes are disadvantaged, they would be mistaken. To compensate they have become great craftsmen that can fabricate weapons with emerald edges, and wear heavy armour. The Slashers' weapon of choice is the halberd, which they use to great effect."

View file

@ -13,6 +13,7 @@ experience=500
level=2
alignment=neutral
advanceto=null
undead_variation=winged
cost=31
usage=fighter
unit_description= _ "Drake Warriors wield swords with great skill, and possess the fire breathing skills of their ancestors."

View file

@ -14,6 +14,7 @@ experience=44
level=1
alignment=neutral
advanceto=Elvish Ranger,Elvish Marksman
undead_variation=archer
cost=18
usage=archer
unit_description= _ "Elvish Archers are trained from youth in archery, and so skilled in long-range combat. Able to fire many arrows quickly and accurately, these Archers make up a large portion of the Elvish military."

View file

@ -14,6 +14,7 @@ experience=500
level=3
alignment=neutral
advanceto=null
undead_variation=archer
cost=80
ability=ambush
usage=mixed fighter

View file

@ -14,6 +14,7 @@ experience=90
level=2
alignment=neutral
advanceto=Elvish Sharpshooter
undead_variation=archer
cost=60
usage=archer
unit_description= _ "Elvish Marksman are expert in use of the bow. Their skill guarantees them a 60% chance to hit enemies, even those hidden in difficult terrain. This great skill with the bow compensates for their lack of skill in melee combat and lesser speed."

View file

@ -14,6 +14,7 @@ experience=80
level=2
alignment=neutral
advanceto=Elvish Avenger
undead_variation=archer
cost=40
usage=mixed fighter
ability=ambush

View file

@ -14,6 +14,7 @@ experience=500
level=3
alignment=neutral
advanceto=null
undead_variation=archer
cost=90
usage=archer
unit_description= _ "The most elite archers in all of Wesnoth, Elvish Sharpshooters are incredibly accurate, guaranteed a 60% chance to hit when attacking, even when firing very quickly. Sharpshooters are excellent at picking off entrenched enemies."

View file

@ -13,6 +13,7 @@ experience=80
level=2
alignment=lawful
advanceto=Master Bowman
undead_variation=archer
cost=32
usage=archer
unit_description= _ "Longbowmen carry the huge specialized bows that they have learned to handle after years of combat. Their missiles can pierce even armor."

View file

@ -12,6 +12,7 @@ experience=500
level=3
alignment=lawful
advanceto=null
undead_variation=archer
cost=45
usage=archer
unit_description= _ "Master Bowmen have reached the highest levels of skill with the bow that any human can hope to attain. Their power with this deadly weapon is surpassed only by that of the Elves."

View file

@ -11,6 +11,7 @@ experience=30
level=1
alignment=chaotic
advanceto=Orcish Crossbowman
undead_variation=archer
cost=12
usage=archer
unit_description= _ "Orcish Archers are considered by many of their fellow orcs to be a lesser caste of warrior, for attacking their enemies from a distance. However, since most orcs won't learn how to handle a bow, he is an indispensable part of the orcish army."

View file

@ -11,6 +11,7 @@ experience=500
level=2
alignment=chaotic
advanceto=null
undead_variation=archer
cost=24
usage=archer
unit_description= _ "Orcish Crossbowmen try to compensate for their lack of skill with the raw power of their weapon. While they are not as effective as the Elvish Marksmen in long-range combat, they are sturdier and can handle themselves a little better than the Elves in close combat."

View file

@ -11,6 +11,7 @@ experience=24
level=1
alignment=chaotic
advanceto=Trapper
undead_variation=archer
cost=14
usage=archer
unit_description= _ "Poachers rely on their hunting experience and are most valuable at night and in forests and swamps."

View file

@ -54,4 +54,16 @@ get_hit_sound=skeleton-hit.wav
sound=sword-swish.wav
[/sound]
[/attack]
[variation]
variation_name=archer
id=Skeleton
name= _ "Skeleton Archer"
race=undead
experience=0
level=0
alignment=chaotic
advanceto=Skeleton Archer
[/variation]
[/unit]

View file

@ -11,6 +11,7 @@ experience=500
level=2
alignment=chaotic
advanceto=null
undead_variation=archer
cost=26
usage=archer
unit_description= _ "Trappers usually work supplying food for bandits and outlaws. Their hunting experience makes them most valuable at night and in forests and swamps."

View file

@ -32,4 +32,44 @@ get_hit_sound=zombie-hit.wav
sound=zombie-attack.wav
[/sound]
[/attack]
[variation]
variation_name=winged
id=Walking Corpse
name= _ "Winged Corpse"
race=undead
image=undead-zombie.png
image_defensive=undead-zombie-defend.png
hitpoints=18
movement_type=undeadfoot
movement=4
experience=24
level=0
alignment=chaotic
advanceto=null
cost=5
usage=fighter
unit_description= _ "Winged Corpses are the bodies of dead drakes, re-animated by dark magic. Although weak in combat, these zombies can spread their curse to those they kill, increasing the army of undead."
get_hit_sound=zombie-hit.wav
[attack]
name=fist
type=impact
range=short
damage=5
number=2
special=plague
[frame]
begin=-200
end=100
image=undead-zombie-attack.png
[/frame]
[sound]
time=-200
sound=zombie-attack.wav
[/sound]
[/attack]
[/variation]
[/unit]

View file

@ -26,6 +26,7 @@ experience=500
level=2
alignment=lawful
advanceto=null
undead_variation=archer
cost=32
ability=skirmisher,regenerates
usage=archer

View file

@ -265,8 +265,15 @@ battle_stats evaluate_battle_stats(const gamemap& map,
}
static const std::string plague_string("plague");
res.attacker_plague = !d->second.type().not_living() && (res.attacker_special == plague_string)
&& !map.is_village(defender);
res.attacker_plague = !d->second.type().not_living() &&
(res.attacker_special.substr(0,6) == plague_string) &&
strcmp(d->second.type().undead_variation().c_str(),"null") &&
!map.is_village(defender);
if(res.attacker_special.size()>8){ //plague(type) used
res.attacker_plague_type=res.attacker_special.substr(7,res.attacker_special.size()-8);
}else{//plague type is that of attacker
res.attacker_plague_type= a->second.type().id();
}
res.defender_plague = false;
static const std::string slow_string("slow");
@ -403,8 +410,16 @@ battle_stats evaluate_battle_stats(const gamemap& map,
res.amount_defender_drains = 0;
}
res.defender_plague = !a->second.type().not_living() && (res.defender_special == plague_string)
&& !map.is_village(attacker);
res.defender_plague = !a->second.type().not_living() &&
(res.defender_special.substr(0,6) == plague_string) &&
strcmp(a->second.type().undead_variation().c_str(),"null") &&
!map.is_village(attacker);
if(res.defender_special.size()>8){ //plague(type) used
res.defender_plague_type=res.defender_special.substr(7,res.defender_special.size()-8);
}else{//plague type is that of attacker
res.defender_plague_type= d->second.type().id();
}
res.defender_slows = (defend.special() == slow_string);
static const std::string first_strike = "firststrike";
@ -655,7 +670,7 @@ void attack(display& gui, const gamemap& map,
}
}
if(dies) {
if(dies) {//attacker kills defender
attackerxp = game_config::kill_experience*d->second.type().level();
if(d->second.type().level() == 0)
attackerxp = game_config::kill_experience/2;
@ -667,6 +682,7 @@ void attack(display& gui, const gamemap& map,
gamemap::location loc = d->first;
gamemap::location attacker_loc = a->first;
std::string undead_variation = d->second.type().undead_variation();
const int defender_side = d->second.side();
LOG_NG << "firing die event\n";
game_events::fire("die",loc,a->first);
@ -678,12 +694,29 @@ void attack(display& gui, const gamemap& map,
d = units.end();
}
//plague units make clones of themselves on the target hex
//plague units make new units on the target hex
if(stats.attacker_plague) {
a = units.find(attacker_loc);
if(a != units.end()) {
units.insert(std::pair<gamemap::location,unit>(loc,a->second));
gui.draw_tile(loc.x,loc.y);
a = units.find(attacker_loc);
game_data::unit_type_map::const_iterator reanimitor;
LOG_NG<<"trying to reanimate "<<stats.attacker_plague_type<<std::endl;
reanimitor = info.unit_types.find(stats.attacker_plague_type);
LOG_NG<<"found unit type:"<<reanimitor->second.id()<<std::endl;
if(reanimitor != info.unit_types.end()) {
unit newunit=unit(&reanimitor->second,a->second.side(),false,true);
//apply variation
if(strcmp(undead_variation.c_str(),"null")){
config mod;
config& variation=mod.add_child("effect");
variation["apply_to"]="variation";
variation["name"]=undead_variation;
newunit.add_modification("variation",mod);
}
units.insert(std::pair<gamemap::location,unit>(loc,newunit));
gui.draw_tile(loc.x,loc.y);
}else{
LOG_NG<<"unit not reanimated"<<std::endl;
}
}
recalculate_fog(map,state,info,units,teams,defender_side-1);
@ -801,7 +834,7 @@ void attack(display& gui, const gamemap& map,
}
}
if(dies) {
if(dies) {//defender kills attacker
defenderxp = game_config::kill_experience*a->second.type().level();
if(a->second.type().level() == 0)
defenderxp = game_config::kill_experience/2;
@ -811,6 +844,7 @@ void attack(display& gui, const gamemap& map,
defenderxp = 0;
attackerxp = 0;
std::string undead_variation = a->second.type().undead_variation();
gamemap::location loc = a->first;
gamemap::location defender_loc = d->first;
const int attacker_side = a->second.side();
@ -823,12 +857,29 @@ void attack(display& gui, const gamemap& map,
a = units.end();
}
//plague units make clones of themselves on the target hex.
//plague units make new units on the target hex.
if(stats.defender_plague) {
d = units.find(defender_loc);
if(d != units.end()) {
units.insert(std::pair<gamemap::location,unit>(loc,d->second));
gui.draw_tile(loc.x,loc.y);
d = units.find(defender_loc);
game_data::unit_type_map::const_iterator reanimitor;
LOG_NG<<"trying to reanimate "<<stats.defender_plague_type<<std::endl;
reanimitor = info.unit_types.find(stats.defender_plague_type);
LOG_NG<<"found unit type:"<<reanimitor->second.id()<<std::endl;
if(reanimitor != info.unit_types.end()) {
unit newunit=unit(&reanimitor->second,d->second.side(),false,true);
//apply variation
if(strcmp(undead_variation.c_str(),"null")){
config mod;
config& variation=mod.add_child("effect");
variation["apply_to"]="variation";
variation["name"]=undead_variation;
newunit.add_modification("variation",mod);
}
units.insert(std::pair<gamemap::location,unit>(loc,newunit));
gui.draw_tile(loc.x,loc.y);
}else{
LOG_NG<<"unit not reanimated"<<std::endl;
}
}
gui.recalculate_minimap();

View file

@ -55,6 +55,7 @@ struct battle_stats
int ndefends, nattacks;
int attack_with, defend_with;
bool attacker_plague, defender_plague;
std::string attacker_plague_type, defender_plague_type;
bool attacker_slows, defender_slows;
bool to_the_death, defender_strikes_first;
std::string attacker_special, defender_special;

View file

@ -900,6 +900,12 @@ const config::child_list& unit_type::modification_advancements() const
return cfg_.get_children("advancement");
}
const std::string& unit_type::undead_variation() const
{
return cfg_["undead_variation"];
}
const std::string& unit_type::usage() const
{

View file

@ -165,6 +165,8 @@ public:
const unit_type& get_gender_unit_type(unit_race::GENDER gender) const;
const unit_type& get_variation(const std::string& name) const;
//info on the type of unit that the unit reanimates as
const std::string& undead_variation() const;
int num_traits() const;