无名杀吧 关注:67,803贴子:297,497
  • 6回复贴,共1

求助一个自制技能的ai问题

只看楼主收藏回复

出牌阶段限一次,你可以弃置一张牌并选择两名角色,然后二者各声明一张【杀】或【闪】;若二者都声明【杀】,二者各流失一点体力;若二者都声明【闪】,二者各弃置一张手牌;否则,声明【杀】的角色摸两张牌并对声明【闪】的角色造成一点伤害。


IP属地:上海1楼2022-11-06 18:07回复
    skill={
    enable:"phaseUse",
    direct:true,
    usable:1,
    filterCard:true,
    selectCard:1,
    content:function(){
    'step 0'
    var list=[]
    var c1=get.cardPile2(function(card){
    return get.name(card,false)=='sha'&&!get.nature(card,false);
    });
    var c2=get.cardPile2(function(card){
    return get.name(card,false)=='shan';
    })
    list.push(c1)
    list.push(c2)
    event.list=list
    var next=player.chooseTarget(2,false).set("filterTarget",function(card,player,target){
    if(ui.selected.targets.length){
    return ui.selected.targets[0]!=target
    }
    return true
    })
    next.prompt2='你可以选择两名角色,然后二者各声明一张【杀】或【闪】;若二者都声明【杀】,二者各流失一点体力;若二者都声明【闪】,二者各弃置一张手牌;否则,声明【杀】的角色摸两张牌并对声明【闪】的角色造成一点伤害。'
    next.ai=function(target){
    return get.attitude(event,player,target)>0
    }
    "step 1"
    if(result.bool){
    event.targets=result.targets
    var dialog=ui.create.dialog('声明一张牌',[event.list,'vcard'],'hidden');
    event.targets[0].chooseButton(dialog,true).ai=function(button){
    if(button.link[2]=='sha'&&get.attitude(event.targets[0],event.targets[1])<0) return 1
    if(button.link[2]=='shan'&&get.attitude(event.targets[0],event.targets[1])>0) return 1
    return [0,1].randomGet();
    }
    }else{
    event.finish()
    return;
    }
    "step 2"
    event.card1=result.buttons[0]
    var dialog=ui.create.dialog('声明一张牌',[event.list,'vcard'],'hidden');
    event.targets[1].chooseButton(dialog,true).ai=function(button){
    if(button.link[2]=='sha'&&get.attitude(event.targets[1],event.targets[0])<0) return 1
    if(button.link[2]=='shan'&&get.attitude(event.targets[1],event.targets[0])>0) return 1
    return [0,1].randomGet();
    }
    "step 3"
    event.card2=result.buttons[0]
    game.broadcastAll(function(){
    ui.arena.classList.add('thrownhighlight');
    });
    game.addVideo('thrownhighlight1');
    event.targets[0].$compare(event.card1,event.targets[1],event.card2);
    "step 4"
    game.log(event.targets[0],'展示了',event.card1);
    game.log(event.targets[1],'展示了',event.card2);
    "setp 5"
    if(get.name(event.card1)=='sha'&&get.name(event.card2)=='sha'){
    event.targets[0].loseHp()
    event.targets[1].loseHp()
    }else if(get.name(event.card1)=='shan'&&get.name(event.card2)=='shan'){
    event.targets[0].chooseToDisCard('h',true)
    event.targets[1].chooseToDisCard('h',true)
    }else if(get.name(event.card1)=='sha'&&get.name(event.card2)=='shan'){
    event.targets[0].draw(2)
    event.targets[1].damage(event.targets[0])
    event.targets[1].chooseToDisCard('h',true)
    }else if(get.name(event.card1)=='shan'&&get.name(event.card2)=='sha'){
    event.targets[1].draw(2)
    event.targets[0].damage(event.targets[1])
    event.targets[0].chooseToDisCard('h',true)
    }
    "step 6"
    game.broadcastAll(function(){
    ui.arena.classList.remove('thrownhighlight');
    });
    game.addVideo('thrownhighlight2')
    },
    ai:{
    expose:0.4,
    order:4,
    result:{
    target:function(player,target){
    if(player.hasUnknown()) return 0;
    if(ui.selected.targets.length) return -1;
    return -0.5;
    },
    },
    },
    }


    IP属地:上海2楼2022-11-06 18:08
    回复
      2026-01-20 05:24:28
      广告
      不感兴趣
      开通SVIP免广告
      这里该chooseButton的ai该如何编写呢,若都是以attitude来写的话,少了一点随机性,若都是以随机数的话,又有点太随机了


      IP属地:上海3楼2022-11-06 18:09
      回复
        然后是整体的ai该如何编写,有时回合不会发动这个技能


        IP属地:上海4楼2022-11-06 18:09
        回复
          技能的来源是囚徒困境,所以可能莫名眼熟


          IP属地:上海5楼2022-11-06 18:12
          回复
            如果让你选你怎么选


            IP属地:陕西来自Android客户端6楼2022-11-06 19:29
            收起回复