Author: alink
Date: Sat May 24 02:05:44 2008
New Revision: 26808

URL: http://svn.gna.org/viewcvs/wesnoth?rev=26808&view=rev
Log:
A discovered hidden unit now lost its hidden status until its next new turn.
Previously, was hidden again after the next user action.
This change a little how hides works for multi sides games.

Modified:
    trunk/src/actions.cpp

Modified: trunk/src/actions.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/actions.cpp?rev=26808&r1=26807&r2=26808&view=diff
==============================================================================
--- trunk/src/actions.cpp (original)
+++ trunk/src/actions.cpp Sat May 24 02:05:44 2008
@@ -2146,18 +2146,24 @@
                        if(adjacent[i] == ui->first)
                                continue;
 
-                       const unit_map::const_iterator it = 
units.find(adjacent[i]);
+                       const unit_map::iterator it = units.find(adjacent[i]);
                        if(it != units.end() && 
team.is_enemy(it->second.side()) &&
                                        
it->second.invisible(it->first,units,teams)) {
                                discovered_unit = true;
-                               unit_ability_list hides = 
it->second.get_abilities("hides",it->first);
-                               
for(std::vector<std::pair<config*,gamemap::location> >::const_iterator hide_it 
= hides.cfgs.begin();
-                                               hide_it != hides.cfgs.end(); 
++hide_it) {
-                                       ambushed_string 
=(*hide_it->first)["alert"];
-                               }
                                should_clear_stack = true;
                                moves_left = 0;
-                               break;
+
+                               it->second.set_state("hidden","no");
+
+                               // we only use the first valid alert message
+                               if (ambushed_string.empty()) {
+                                       unit_ability_list hides = 
it->second.get_abilities("hides",it->first);
+                                       
+                                       
for(std::vector<std::pair<config*,gamemap::location> >::const_iterator hide_it 
= hides.cfgs.begin();
+                                                       hide_it != 
hides.cfgs.end(); ++hide_it) {
+                                               ambushed_string 
=(*hide_it->first)["alert"];
+                                       }
+                               }
                        }
                }
        }


_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits

Reply via email to