Pārlūkot izejas kodu

Battle log messages for new abilities.

Lots of fixes.
DjWarmonger 14 gadi atpakaļ
vecāks
revīzija
a73a1c2724
4 mainītis faili ar 80 papildinājumiem un 23 dzēšanām
  1. 63 14
      client/CBattleInterface.cpp
  2. 2 2
      config/AC_desc.txt
  3. 4 4
      config/cr_abils.txt
  4. 11 3
      config/sp_sounds.txt

+ 63 - 14
client/CBattleInterface.cpp

@@ -2845,6 +2845,8 @@ void CBattleInterface::spellCast( const BattleSpellCast * sc )
 
 	//displaying message in console
 	bool customSpell = false;
+	bool plural = false; //add singular / plural form of creature text if this is true
+	int textID = 0;
 	if(sc->affectedCres.size() == 1)
 	{
 		std::string text = CGI->generaltexth->allTexts[195];
@@ -2857,35 +2859,82 @@ void CBattleInterface::spellCast( const BattleSpellCast * sc )
 		{
 			switch(sc->id)
 			{
+				case 70: //Stone Gaze
+					customSpell = true;
+					plural = true;
+					textID = 558;
+					break;
 				case 71: //Poison
+					customSpell = true;
+					plural = true;
+					textID = 561;
+					break;
+				case 72: //Bind
+					customSpell = true;
+					text = CGI->generaltexth->allTexts[560];
+					boost::algorithm::replace_first(text, "%s", curInt->cb->battleGetStackByID(*sc->affectedCres.begin(), false)->getCreature()->namePl );
+					break;	//Roots and vines bind the %s to the ground!
+				case 73: //Disease
+					customSpell = true;
+					plural = true;
+					textID = 553;
+					break;
+				case 74: //Paralyze
+					customSpell = true;
+					plural = true;
+					textID = 563;
+					break;
+				case 75: // Aging //TODO: hitpoints
+					customSpell = true;
+					plural = true;
+					textID = 551;
+					break;
+				case 78: //Dispell helpful spells
+					text = CGI->generaltexth->allTexts[555];
+					boost::algorithm::replace_first(text, "%s", curInt->cb->battleGetStackByID(*sc->affectedCres.begin())->type->namePl);
 					customSpell = true;
 					break;
-				//case 75: // Aging
-				//	customSpell = true;
-				//	break;
 				case 79: // Death Stare
 					customSpell = true;
-					if (sc->dmgToDisplay > 1)
+					if (sc->dmgToDisplay)
 					{
-						text = CGI->generaltexth->allTexts[119]; //%d %s die under the terrible gaze of the %s.
-						boost::algorithm::replace_first(text, "%d", boost::lexical_cast<std::string>(sc->dmgToDisplay));
-						boost::algorithm::replace_first(text, "%s", curInt->cb->battleGetStackByID(*sc->affectedCres.begin(), false)->getCreature()->namePl );
+						if (sc->dmgToDisplay > 1)
+						{
+							text = CGI->generaltexth->allTexts[119]; //%d %s die under the terrible gaze of the %s.
+							boost::algorithm::replace_first(text, "%d", boost::lexical_cast<std::string>(sc->dmgToDisplay));
+							boost::algorithm::replace_first(text, "%s", curInt->cb->battleGetStackByID(*sc->affectedCres.begin(), false)->getCreature()->namePl );
+						}
+						else
+						{
+							text = CGI->generaltexth->allTexts[118]; //One %s dies under the terrible gaze of the %s.
+							boost::algorithm::replace_first(text, "%s", curInt->cb->battleGetStackByID(*sc->affectedCres.begin())->type->nameSing);
+						}
+						boost::algorithm::replace_first(text, "%s", "Creatures"); //casting stack
 					}
 					else
-					{
-						text = CGI->generaltexth->allTexts[118]; //One %s dies under the terrible gaze of the %s.
-						boost::algorithm::replace_first(text, "%s", curInt->cb->battleGetStackByID(*sc->affectedCres.begin())->type->nameSing);
-					}
-					boost::algorithm::replace_first(text, "%s", "Creatures"); //casting stack
+						text = "";
 					break;
 				default:
 					boost::algorithm::replace_first(text, "%s", "Creature"); //TODO: better fix
 			}
+			if (plural)
+			{
+				if (curInt->cb->battleGetStackByID(*sc->affectedCres.begin())->count > 1)
+				{
+					text = CGI->generaltexth->allTexts[textID + 1];
+					boost::algorithm::replace_first(text, "%s", curInt->cb->battleGetStackByID(*sc->affectedCres.begin())->type->namePl);
+				}
+				else
+				{
+					text = CGI->generaltexth->allTexts[textID];
+					boost::algorithm::replace_first(text, "%s", curInt->cb->battleGetStackByID(*sc->affectedCres.begin())->type->nameSing);
+				}
+			}
 		}
 		if (!customSpell)
 			boost::algorithm::replace_first(text, "%s", CGI->spellh->spells[sc->id]->name);
-
-		console->addText(text);
+		if (text.size())
+			console->addText(text);
 	}
 	else
 	{

+ 2 - 2
config/AC_desc.txt

@@ -68,8 +68,8 @@
 66 0
 67 1 SP11_.DEF
 68 1 SP02_.DEF
-69 1 C05SPE0.DEF
-70 2 SP02_.DEF SP10_.DEF
+69 1 SP05_.DEF
+70 0
 71 1 SP01_.DEF
 72 1 SP04_.DEF
 73 1 SP03_.DEF

+ 4 - 4
config/cr_abils.txt

@@ -17,11 +17,11 @@
 +  17 MAGIC_RESISTANCE 40 0 0 	 	//battle dwarf's magic resistance 40%				
 +  20 CHANGES_SPELL_COST_FOR_ENEMY 2 0 0	//pegasus makes spell cost higher for enemy mage					
 +  21 CHANGES_SPELL_COST_FOR_ENEMY 2 0 0 	//silver pegasus makes spell cost higher for enemy mage					
-+  22 SPELL_AFTER_ATTACK 72 0 100   //dendroids cast bind						
-+  23 SPELL_AFTER_ATTACK 72 0 100 	//dendroid guards cast bind					
-+  24 SPELL_AFTER_ATTACK 62 0 20 	//unicorns cast blind with 20% probability					
++  22 SPELL_AFTER_ATTACK 100 72 0   //dendroids cast bind						
++  23 SPELL_AFTER_ATTACK 100 72 0	//dendroid guards cast bind					
++  24 SPELL_AFTER_ATTACK 20 62 0	//unicorns cast blind with 20% probability					
 +  24 SPELL_RESISTANCE_AURA 0 55 0	//unicorn					
-+  25 SPELL_AFTER_ATTACK 62 0 20 	//war unicorns cast blind with 20% probability					
++  25 SPELL_AFTER_ATTACK 20 62 0	//war unicorns cast blind with 20% probability					
 +  25 SPELL_RESISTANCE_AURA 20 55 0 	//war unicorn					
 +  26 LEVEL_SPELL_IMMUNITY 3 0 0 	//green dragon's spell immunity					
 +  26 TWO_HEX_ATTACK_BREATH 0 0 0  	//green dragon's breath					

+ 11 - 3
config/sp_sounds.txt

@@ -36,22 +36,30 @@
 55 SLAYER.wav	# slayer
 56 FRENZY.wav	# frenzy
 61 FORGET.wav	# forgetfulness
+70 PARALYZE.wav	# stone gaze - not sure
+71 POISON.wav	# poison
+72 BIND.wav		# bind
+73 DISEASE.wav	#
+74 PARALYZE.wav	#
+75 AGE.wav		# aging - already used (?)
+76 DEATHCLD.wav # death cloud
+77 LIGHTBLT.wav # thunder
+78 DISPELL.wav	# dispell helpful spells
 79 DEATHSTR.wav # Death Stare
+80 ACID.wav		# Acid breath / defence piercing
 
 
 
 #BLIND.wav
-#POISON.wav
 #CURE.wav
 #HYPNOTIZ.wav
-#DEATHCLD.wav
 #DEATHBLO.wav
 #DRAINLIF.wav
 #DRGNSLAY.wav
 #DISGUISE.wav
-#DISEASE.wav
 #QUIKSAND.wav
 #FIRESHIE.wav fireshield when cast
 #FIRESHLD.wav fireshield effect
 #ANIMDEAD.wav
 #ANTIMAGK.wav
+