What's new
  • Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • Visit Resources
  • Visit Downloads
  • Visit Portal

[Custom Deck] Silverfish AI

Anyone able to make an educated guess as to why I can only select Silverfish control or rush in the custom deck-section of the bot, and not the mulligan?

-nummus
 
calculating stuff... 23:31:50.6288
calculating ended! 23:31:50.6768
play action
play: Druid of the Claw target nothing
should place minion left of your first minion (0 0)

target failure...

play action
play: Druid of the Claw target nothing
should place minion left of your first minion (0 0)


and cant play this unit "Druid of the Claw" cant target 1 or 2 buff
 
@obtkamer

How do you change the mulligan around? When I make it 3 instead of 4, it still stays at 4. Also, can't get hunters mark or freezing trap to be taken off either. I have changed it both in the rush and control sections too but think that's for HC not HB... example below (changes in bold).

public class HBMulligan : ICustomMulligan
{
private const int MaximumCost = 3;
public IEnumerator DoMulligan()
{
Helpfunctions.Instance.ErrorLog("handle mulligan");
List<HSCard> list = TritonHS.GetMulliganCards();

HSCard enemyPlayer = TritonHS.EnemyHero;
HSCard ownPlayer = TritonHS.OurHero;
string enemName = Hrtprozis.Instance.heroIDtoName(enemyPlayer.Id);
string ownName = Hrtprozis.Instance.heroIDtoName(ownPlayer.Id);

if (Mulligan.Instance.hasmulliganrules(ownName, enemName))
{

List<Mulligan.CardIDEntity> celist = new List<Mulligan.CardIDEntity>();
foreach (HSCard item in list)
{
if (item.Id != "GAME_005")// dont mulligan coin
{
celist.Add(new Mulligan.CardIDEntity(item.Id, item.EntityId));
}
}
List<int> mullientitys = Mulligan.Instance.whatShouldIMulligan(celist, ownName, enemName);
foreach (HSCard item in list)
{
if (mullientitys.Contains(item.EntityId))
{
Helpfunctions.Instance.ErrorLog("Rejecting Mulligan Card " + item.Name + " because of your rules");
TritonHS.ToggleMulliganCard(item);
yield return Coroutine.Sleep(1000);
}
}


}
else
{
foreach (HSCard item in list)
{
if (item.Cost >= 3)
{
Helpfunctions.Instance.ErrorLog("Rejecting Mulligan Card " + item.Name + " because it cost is >= 3.");

TritonHS.ToggleMulliganCard(item);
yield return Coroutine.Sleep(1000);
continue;
}
if (item.Id == "EX1_308" || item.Id == "EX1_622" || item.Id == "EX1_005" || item.Id == "EX1_611" || item.Id == "CS2_084")
{
Helpfunctions.Instance.ErrorLog("Rejecting Mulligan Card " + item.Name + " because it is soulfire or shadow word: death");
TritonHS.ToggleMulliganCard(item);
yield return Coroutine.Sleep(1000);
}
}
}



yield return Coroutine.Sleep(1000);
TritonHS.EndMulligan();
 
Last edited:
I was playing on arena when a player used ( legendary card ( Nozdormu ) player only have 15 seconds to take their turns .) I lost the round because the short time while there was a lot of card on board .
if It is possible to conceder the time frame and skip any unnecessary action .
 
Holy Light healed enemy minion.

Code:
#######################################################################
start calculations, current time: 13:40:19 V113.9 rush 3000 face 15 ets 40 ets2 20 ents 20
#######################################################################
mana 10/10
emana 10
own secretsCount: 0
enemy secretsCount: 0 ;
player:
0 0 0 2
ownhero:
pala 30 30 0 False False 36 True 0 False 0 0
weapon: 0 0 unknown
ability: True CS2_101
osecrets: 
enemyhero:
warrior 30 30 2 False False 4
weapon: 4 1 gorehowl
ability: true CS2_102
fatigue: 16 0 15 0
OwnMinions:
silverhandrecruit CS2_101t zp:1 e:80 A:1 H:1 mH:1 rdy:True natt:0
EnemyMinions:
spitefulsmith CS2_221 zp:1 e:32 A:4 H:4 mH:6 rdy:True ex silenced
armorsmith EX1_402 zp:2 e:19 A:1 H:4 mH:4 rdy:False ex ptt
Own Handcards: 
pos 1 holylight 2 entity 46 CS2_089
pos 2 consecration 4 entity 61 CS2_093
pos 3 spellbreaker 4 entity 50 EX1_048
pos 4 guardianofkings 7 entity 59 CS2_088
Enemy cards: 2
ownDiedMinions: 
enemyDiedMinions: 
og: 864,1;21,1;706,1;115,1;507,2;803,1;510,1;82,1;656,1;
eg: 797,1;232,1;415,1;109,1;869,1;298,2;756,1;209,1;503,1;
received 13:40:19:0543 actions to do:
play id 46 target 32 pos 1
attack 80 enemy 4
play id 59 pos 2
set best action-----------------------------------
-a-
play id 46 target 32 pos 1

-a-
attacker: 80 enemy: 4

-a-
play id 59 pos 2

nmgsim-
nmgsime-
play id 46 target 32 pos 1

play: Holy Light target: Spiteful Smith choice: 0
recalc-check###########
enemyhero changed 30 30 4 2 2 2 1 1 False False False False
#######################################################################
 
I don't know if you are aware (or if someone already mentioned this glitch). I constantly see my Shaman making the mistake of using a Totemic might on a turn that he will eventually use Totemic Call. I could be wrong, but this sounds like the incorrect play 100% of the time.

Is there anything that can be done about this?
 
Hello, how do I know if I've downloaded the most current and up to date one? I see people having their custom deck as "SilverfishControl.SilverfishControl" or "SilverfishRush.SilverfishRush", however I followed the steps you gave and mine only appears as "SilverfishControl" and "SilverfishRush"
The download link in the main thread always gives you the latest version
 
Question 1 .
what I need to change on silverfish_HB.cs to make the bot calculate and play,attck,use abilities without any delay ?

Question 2 .
need more info regarding these numbers .

int amountBoardsInEnemyTurnSim = 40;
int amountBoardsInEnemyTurnSimSecondStepp = 200;
int amountBoardsInEnemySecondTurnSim = 20;

int nextturnsimDeep = 6;
int nextturnsimMaxWidth = 20;
int nexttunsimMaxBoards = 200;
 
Missbehaviour:

The bot should have had lethal on an enemy mage, but missplaced the defender or argus so that only one minion got buffed. The mage survived with 1 hp.

In general it would be awesome if the bot would get a function that "if number of minions >=2 always place defender of argus between them" because even if the bot was protecting some priority target ( which usually he doesn´t ) it is an unecessary loss of buffs /stats.

File-Upload.net - UILogg_2014-11-15_14-49-24.txt
 
Hi botmaker,

2 more general remarks:

The bot plays "earth shock" on targets and hexes them afterwards ( shaman )

also he is extremely conservative while playing nerubian egg. can you make it so that it is a priority to get it on the field ? it is more useful early to bait out silences, hexes or simply counter AoE clear than always just playing it last when its the only option left.

thank you very much in advance.
 
it keeps using life tap on warlock constantly losing a lot of health, is there a settings I shoud change?
 
so my vacances are over and i have time for you guys :D

@tumbum (coin issue) its a bug with hrtbuddy

@lsqlhl5862 https://www.thebuddyforum.com/heart...custom-deck-silverfish-ai-82.html#post1667060

@Jack you find the exe somewhere on my github page, to use it copy it to the rigth place (Data folder) and change this line frome false to true:
this.useExternalProcess = true;

and the speed is in the most cases the same, simply because your tested boards are to small :D

which number related to = Boards calculated each depth level .?

there is not such an setting (only in the second turn simulation:
int nextturnsimMaxWidth = 10;)

which number related to = Childs board kept for next depth level search .?

int mxwde = 3000;


which number related to = Boards kept for enemy turn simulation .?

there is not such an setting! only a number for on how much boards are the second turn simulation is performed int twotsamount = 256; (if you use silver.exe set it to 1000 and above)

@ik777 the placement setting is only recomended with the exe :D

@jacks the second turn simulation uses (up to) 32 cores.

@kaime jeah, because silver.rush have his own settings. just search for this a second time: settings#####################

@Vector did you tried the mulligan-stuff i posted? (see link above)

@jacks i have to lower the settings in the nozdurm case :D

@runittwice you have to activate it in source and copy it into the right folder(see above)
and please dont put a empty test.exe in the same folder as the silver.exe! (it have to contain a board to simulate (the stuff you should post in an correct bugreport!)

@NaughtbutToLongName i look at this can you post a uai-log?

@jacks for the delay: i created a special version, with some log for the timings.will post it later!
edit use this one and send me crawler + uai log:

https://drive.google.com/file/d/0BxhxijYPL-BGMGxWVWhfdG42Yzg/view?usp=sharing

and read https://www.thebuddyforum.com/heart...custom-deck-silverfish-ai-83.html#post1668004 for your settings.

@all thanks for your reports, im going to look at it soon.
 
Last edited:
I think one should mulligan the kill enemy with an attack value of 5 or higher as a priest,not much use at the start of the game
 
@Vector did you tried the mulligan-stuff i posted? (see link above)

Was able to figure it out in the Silverfish_BH file. Just needed to reboot the game itself to put it into effect (I guess the changes didn't go into effect until then).

Also, the crawler code allows for the mulligan to be different for Rush and Control. However, the HB code seems to only allow for one type of mulligan in the HB file itself. Any way to emulate crawler and have it different for the different play types?

Also, not sure if anyone has reported this bug yet but after a frost trap is played on a card - that card is put back on the field even with its higher cost despite it not being the best option. It happened on a flame imp that i played (see log).
 

Attachments

Last edited:
Back
Top