Author: boucman
Date: Fri Mar 27 16:49:22 2009
New Revision: 34185
URL: http://svn.gna.org/viewcvs/wesnoth?rev=34185&view=rev
Log:
added a very basic poison handling. This is a proof of concept to be improved
on. Patch by Velory
Added:
trunk/data/ai/formula/poisoner_attack.fai
trunk/data/ai/formula/poisoner_eval.fai
trunk/data/scenario-poisoning.cfg
Modified:
trunk/changelog
trunk/data/_main.cfg
trunk/data/core/about.cfg
Modified: trunk/changelog
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/changelog?rev=34185&r1=34184&r2=34185&view=diff
==============================================================================
--- trunk/changelog (original)
+++ trunk/changelog Fri Mar 27 16:49:22 2009
@@ -20,6 +20,8 @@
* FormulaAI:
* Fixed bug #13230: added debug_float FormulaAI function to allow debugging
via floating popups on the specified hex
+ * Added run_file FormulaAI function to allow running .fai scripts directly
+ from in-game console
* WML Engine:
* Added [show_objectives] tag (part of bug #13042)
* Made moveto events set $x2,$y2 to the source hex. (bug #13140)
Modified: trunk/data/_main.cfg
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/data/_main.cfg?rev=34185&r1=34184&r2=34185&view=diff
==============================================================================
--- trunk/data/_main.cfg (original)
+++ trunk/data/_main.cfg Fri Mar 27 16:49:22 2009
@@ -18,6 +18,7 @@
{scenario-test.cfg}
{scenario-formula.cfg}
{scenario-formula-recruitment.cfg}
+{scenario-poisoning.cfg}
[textdomain]
name="wesnoth"
[/textdomain]
Added: trunk/data/ai/formula/poisoner_attack.fai
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/data/ai/formula/poisoner_attack.fai?rev=34185&view=auto
==============================================================================
--- trunk/data/ai/formula/poisoner_attack.fai (added)
+++ trunk/data/ai/formula/poisoner_attack.fai Fri Mar 27 16:49:22 2009
@@ -1,0 +1,13 @@
+fai 'poisoner_attack.fai'
+
+def get_best_defense_loc(moves, attacker, enemy)
+ choose(filter(map(filter(moves, src=attacker.loc), dst),
+ distance_between(self, enemy.loc) = 1),
+ defense_on(attacker.loc, self));
+
+ attack(me.loc, get_best_defense_loc(my_moves.moves, me, target),
target.loc, att_weap)
+
+
+ where att_weap = index_of(['poison'],map(me.attacks,special))
+
+faiend
Added: trunk/data/ai/formula/poisoner_eval.fai
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/data/ai/formula/poisoner_eval.fai?rev=34185&view=auto
==============================================================================
--- trunk/data/ai/formula/poisoner_eval.fai (added)
+++ trunk/data/ai/formula/poisoner_eval.fai Fri Mar 27 16:49:22 2009
@@ -1,0 +1,17 @@
+fai 'poisoner_eval.fai'
+
+if(filter(me.attacks,'att',filter(att.special,'spe',contains_string(spe,'poison'))),
+ if(target.undead = 0,
+ if(target.hitpoints >= 5,
+ if(target.max_experience - target.experience > 8,
+ if(index_of('regenerates',target.abilities) =
-1,
+
if(index_of('poisoned',keys(target.states)) = -1, 1
+ ,-1)
+ ,-1)
+ ,-1)
+ ,-1)
+ ,-1)
+,-1)
+
+
+faiend
Modified: trunk/data/core/about.cfg
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/data/core/about.cfg?rev=34185&r1=34184&r2=34185&view=diff
==============================================================================
--- trunk/data/core/about.cfg (original)
+++ trunk/data/core/about.cfg Fri Mar 27 16:49:22 2009
@@ -756,6 +756,11 @@
comment = "unit list"
[/entry]
[entry]
+ name = "Burkay Ãzdemir (Velory)"
+ comment = "Poisoning improvement for Formula AI"
+ [/entry]
+
+ [entry]
name = "Chris Hopman (cjhopman)"
[/entry]
[entry]
Added: trunk/data/scenario-poisoning.cfg
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/data/scenario-poisoning.cfg?rev=34185&view=auto
==============================================================================
--- trunk/data/scenario-poisoning.cfg (added)
+++ trunk/data/scenario-poisoning.cfg Fri Mar 27 16:49:22 2009
@@ -1,0 +1,156 @@
+#textdomain wesnoth
+# @file data/scenario-test.cfg
+
+[test]
+ name="Test scenario"
+ map_data=" border_size=1
+ usage=map
+
+Hh , Hh , Gg , Wwf , Wwf , Gs^Fp
, Mm , Hh , Gg , Gs^Fp , Gg , Hh
, Gg , Mm , Hh , Mm , Wwf ,
Wwf , Hh , Gs^Fp , Hh , Mm , Mm
+Hh , Hh , Gg^Ve , Wwf , Wwf , Gs^Fp
, Mm , Hh , Gg , Gs^Fp , Gg , Hh
, Gg , Mm , Hh , Mm , Wwf ,
Wwf , Hh , Gs^Fp , Hh , Mm , Mm
+Wwf , Wwf , Wwf , Wwf , Gg , Wwf
, Wwf , Hh , Gg , Gg , Wwf , Ch
, Wwf , Gs^Fp , Wwf , Wwf , Re ,
Re , Hh , Mm , Wwf , Mm , Mm
+Mm , Mm , Wwf , Gs^Fp , Gg^Vh , Wwf
, Gg , Gg , Wwf , Wwf , Wwf , 1 Kh
, Ch , Wwf , Re , Re , Rd ,
Rd , Wwf , Wwf , Gs^Fp , Wwf , Wwf
+Wwf , Wwf , Mm , Wwf , Gs^Fp , Wwf
, Wwf , Wwf , Gg^Vh , Gg , Wwf , Ch
, Wwf , Ch , Rd , Rd , Wwf ,
Wwf , Gg^Vh , Gs^Fp , Re^Gvs , Hh , Hh
+Hh , Hh , Wwf , Gs^Fp , Wwf , Wwf
, Gg , Gg , Gg , Gg , Wwf , Ch
, Gg , Wwf , Wwf , Wwf , Mm ,
Gs^Fp , Re , Re^Gvs , Gg^Wm , Re^Gvs , Re^Gvs
+Wwf , Wwf , Mm , Wwf , Hh , Gs^Fp
, Rd , Rd , Gg , Gg , Wwf , Wwf
, Gs^Fp , Gg , Hh , Gg , Re ,
Re , Rd , Rd , Gg , Hh , Hh
+Hh , Hh , Gs^Fp , Gg , Gg , Rd
, Gg , Gg , Wwf , Wwf , Gs^Fp , Wwf
, Gs^Fp , Mm , Re , Re , Rd ,
Rd , Gg , Ggf , Mm , Gs^Fp , Gs^Fp
+Gs^Fp , Gs^Fp , Gg , Gg , Wwf , Gg
, Wwf , Wwf , Mm , Hh , Wwf , Wwf
, Re , Re , Rd , Rd , Rd ,
Gg , Gs^Fp , Gs^Fp , Gs^Fp , Hh , Hh
+Hh , Hh , Wwf , Wwf , Hh , Wwf
, Gg , Gg , Gg , Gg , Wwf , Re
, Re , Rd , Gg , Gg , Gg ,
Gg^Vh , Hh , Gg , Wwf , Ggf , Ggf
+Wwf , Wwf , Hh , Ggf , Gs^Fp , Hh^Vhh
, Gg , Gg , Gg , Ss^Vhs , Hh , Ww
, Gs^Fp , Gg , Gs^Fp , Hh , Wwf ,
Wwf , Wwf , Wwf , Gg , Wwf , Wwf
+Hh , Hh , Gg , Gg , Re , Gg
, Re , Re , Gg , Ss , Gs^Fp , Ww
, Hh , Mm , Ww , Wwf , Gg ,
Gg , Ds , Gg , Gg , Gs^Fp , Gs^Fp
+Gs^Fp , Gs^Fp , Gg , Rd , Rd , Re
, Rd , Re , Hh , Mm , Wwf , Ww
, Ww , Ww , Gg , Gg , Hh ,
Gs^Fp , Rd , Rd , Hh , Gg , Gg
+Rd , Rd , Gs^Fp , Hh , Rd , Rd
, Gs^Fp , Re , Gg , Gg , Wwf , Gg
, Wwf , Gg , Gg , Re , Gs^Fp ,
Hh , Rd , Mm , Gs^Fp , Rd , Rd
+Rd , Rd , Hh , Mm , Rd , Hh
, Hh , Re , Gg , Gg , Ww , Gg
, Wwf , Gg , Hh , Re , Rd ,
Rd , Rd , Hh , Gg , Rd , Rd
+Gg , Gg , Gg , Rd , Ds , Gs^Fp
, Gg , Gg , Ww , Ww , Hh , Ww
, Gs^Fp , Mm , Gg , Re , Re ,
Re , Re , Rd , Gg , Gs^Fp , Gs^Fp
+Gs^Fp , Gs^Fp , Gg , Gg , Wwf , Gg
, Wwf , Wwf , Gs^Fp , Mm , Gs^Fp , Ww
, Hh , Ss , Gg , Re , Gg ,
Gg , Gs^Fp , Gg , Hh , Hh , Hh
+Wwf , Wwf , Wwf , Wwf , Hh , Wwf
, Gg , Hh , Gg , Gg , Re , Ww
, Wwf , Ss^Vhs , Gg , Gg , Gg ,
Hh^Vhh , Hh , Ggf , Wwf , Wwf , Wwf
+Ggf , Ggf , Gs^Fp , Gg , Gs^Fp , Gg^Vh
, Rd , Gg , Rd , Rd , Re , Re
, Wwf , Gg , Mm , Gg , Wwf ,
Wwf , Wwf , Wwf , Gg , Mm , Mm
+Hh , Hh , Mm , Gs^Fp , Gg , Gg
, Rd , Rd , Re , Re , Gs^Fp , Wwf
, Gs^Fp , Hh , Wwf , Wwf , Gg ,
Gg , Gg , Gg , Gs^Fp , Gs^Fp , Gs^Fp
+Gs^Fp , Gs^Fp , Gg , Ggf , Rd , Rd
, Re , Re , Hh , Mm , Gg , Wwf
, Wwf , Wwf , Gg , Gg , Rd ,
Rd , Hh , Gg , Mm , Hh , Hh
+Hh , Hh , Gg^Wm , Rd , Re , Re
, Mm , Gg , Wwf , Wwf , Wwf , Ch
, Gg , Gg , Gg , Rd , Gg ,
Gs^Fp , Wwf , Wwf , Wwf , Wwf , Wwf
+Re^Gvs , Re^Gvs , Re^Gvs , Re^Gvs , Gg^Vh , Gs^Fp
, Wwf , Wwf , Rd , Ch , Ch , Ch
, Gg , Gg , Gg^Vh , Gg , Wwf ,
Wwf , Gs^Fp , Gs^Fp , Gg^Ve , Gg , Gg
+Hh , Hh , Gs^Fp , Gs^Fp , Wwf , Wwf
, Rd , Rd , Re , Re , Wwf , 2 Kh
, Wwf , Gg , Wwf , Wwf , Gg ,
Wwf , Wwf , Wwf , Wwf , Gs^Fp , Gs^Fp
+Gs^Fp , Gs^Fp , Wwf , Wwf , Mm , Rd
, Gs^Fp , Hh , Wwf , Wwf , Gg , Ch
, Gg , Wwf , Hh , Gg , Wwf ,
Wwf , Gg^Vh , Gg , Wwf , Mm , Mm
+Gs^Fp , Gs^Fp , Wwf , Wwf , Mm , Rd
, Gs^Fp , Wwf , Wwf , Gg , Gg , Gg
, Gg , Gg , Hh , Gg , Wwf ,
Wwf , Gg , Gg , Wwf , Mm , Mm
+"
+
+ turns=90
+ id=poison
+
+ {DEFAULT_SCHEDULE}
+
+ [label]
+ x,y=3,8
+ text="Target Choose test"
+ [/label]
+ [label]
+ x,y=17,3
+ text="Weapon test with low hp target"
+ [/label]
+ [label]
+ x,y=13,8
+ text="Regeneration attack Test"
+ [/label]
+ [label]
+ x,y=7,3
+ text="Undead Target Test"
+ [/label]
+
+ [side]
+ name="Azalin"
+ type=Necromancer
+ id=side_1_leader
+ canrecruit=yes
+ recruit=Assassin,Thief,Poacher,Footpad
+ gold=90
+ controller=human
+
+ [unit]
+ x,y=13,8
+ type="Ancient Wose"
+ generate_name=yes
+ [/unit]
+ [unit]
+ x,y=3,7
+ type="Arch Mage"
+ generate_name=yes
+ [/unit]
+ [unit]
+ x,y=2,7
+ type="Elvish Archer"
+ generate_name=yes
+ [/unit]
+ [unit]
+ x,y=16,5
+ type="Elvish Archer"
+ generate_name=yes
+ [/unit]
+ [unit]
+ x,y=2,8
+ type="Elvish Archer"
+ generate_name=yes
+ [/unit]
+ [unit]
+ x,y=17,2
+ type="Elvish Fighter"
+ hitpoints=3
+ generate_nema=yes
+ [/unit]
+ [unit]
+ x,y=7,2
+ type="Skeleton"
+ generate_name=yes
+ [/unit]
+ [/side]
+
+ [side]
+ name=FormulaAı
+ type=Dark Sorcerer
+ side=2
+ canrecruit=yes
+ recruit=Skeleton,Skeleton Archer,Ghost,Ghost,Vampire Bat,Vampire
Bat,Ghoul
+ gold=100
+ shroud=yes
+
+ [unit]
+ x,y=5,8
+ type="Ghoul"
+ generate_name=yes
+ [/unit]
+ [unit]
+ x,y=6,9
+ type="Cuttle Fish"
+ generate_name=yes
+ [/unit]
+ [unit]
+ x,y=13,7
+ type="Cuttle Fish"
+ generate_name=yes
+ [/unit]
+ [unit]
+ x,y=17,3
+ type="Cuttle Fish"
+ generate_name=yes
+ [/unit]
+ [unit]
+ x,y=7,3
+ type="Ghoul"
+ generate_name=yes
+ [/unit]
+
+ ai_algorithm=formula_ai
+ [ai]
+ eval_list=yes
+
+ [register_candidate_move]
+ name=poisoner
+ type=attack
+ evaluation="{ai/formula/poisoner_eval.fai}"
+ action="{ai/formula/poisoner_attack.fai}"
+ [/register_candidate_move]
+
+ [/ai]
+ [/side]
+[/test]
+
+# vim: tabstop=4: shiftwidth=4: expandtab: softtabstop=4: autoindent:
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits