/// <summary> tg_train_home 实体转换 NpcMonsterVo </summary> /// <param name="model">武将宅怪物Vo</param> /// <returns>前端NpcMonsterVo</returns> public static NpcMonsterVo ToNpcMonsterVo(tg_train_home model) { return(new NpcMonsterVo() { id = model.id, baseId = model.npc_id, state = model.npc_state, spirit = model.npc_spirit, isSteal = model.is_steal, }); }
/// <summary>处理喝茶获得魂信息</summary> private ASObject AcquireSpirit(Int64 userid, tg_train_home npc, tg_role_life_skill lifeskill) { var spirit = (new Share.RoleTrain()).GetSpirit(lifeskill.sub_tea, lifeskill.sub_tea_level); //喝茶获得的魂数 var sp = npc.npc_spirit; sp = sp - spirit; if (sp < 0) { spirit = npc.npc_spirit; npc.npc_spirit = 0; } else { npc.npc_spirit = sp; } return(!tg_train_home.UpdateNpc(npc) ? Error((int)ResultType.DATABASE_ERROR) : TeaInfo(userid, npc.npc_spirit, spirit)); }
/// <summary>处理喝茶获得魂信息</summary> private ASObject AcquireSpirit(tg_user user, tg_train_home npc, int teaid, int level) { var spirit = (new Share.RoleTrain()).GetSpirit(teaid, level); //顿悟茶道获得的魂数 var sp = npc.npc_spirit; sp = sp - spirit; if (sp < 0) { spirit = npc.npc_spirit; npc.npc_spirit = 0; } else { npc.npc_spirit = sp; } return(!tg_train_home.UpdateNpc(npc) ? Error((int)ResultType.DATABASE_ERROR) : TeaInfo(npc.npc_spirit, user, spirit)); }
/// <summary>对战结果处理</summary> private ASObject ChallengeResult(TGGSession session, BaseNpcMonster npcinfo, tg_train_home npc, FightVo fight) { var isprop = false; var exp = npcinfo.experience; var equips = npcinfo.equip; var probability = npcinfo.probability; var reward = new List <RewardVo>(); var propreward = new List <RewardVo>(); if (fight.isWin) { PowerUpdate(fight.isWin, session.Player.Role.Kind); //体力更新 reward = BuildReward(exp); RewardExp(session, exp); //推送经验奖励 UpdateExt(session.Player.User.id); npc.npc_state = (int)FightResultType.WIN; //更新npc状态为已战胜 npc.Update(); var newequip = Common.GetInstance().RandomEquip(session.Player.User.id, equips, probability); //是否获得装备 isprop = newequip != null; if (newequip != null) { Variable.TempProp.AddOrUpdate(session.Player.User.id, new List <tg_bag>() { newequip }, (m, n) => n); var listaso = new List <ASObject> { AMFConvert.ToASObject(EntityToVo.ToEquipVo(newequip)) }; propreward.Add(new RewardVo { goodsType = (int)GoodsType.TYPE_EQUIP, increases = listaso, }); } } FightSend(fight, isprop, reward, session.Player.User.id, propreward); //发送战斗协议 (new Share.DaMing()).CheckDaMing(session.Player.User.id, (int)DaMingType.武将宅挑战); return(new ASObject(Common.GetInstance().NpcChallengeData((int)ResultType.SUCCESS, fight.isWin ? (int)FightResultType.WIN : (int)FightResultType.LOSE))); }
/// <summary>偷窃逻辑处理</summary> private ASObject StealNpc(TGGSession session, tg_user_extend extend, BaseNpcMonster basenpc, tg_train_home npc) { var userid = session.Player.User.id; var nprob = GetProbability(session.Player.Role.LifeSkill.sub_ninjitsu, session.Player.Role.LifeSkill.sub_ninjitsu_level); //忍术加成概率 var bprob = GetBrainProb(session.Player.Role); //智谋加成概率 var equip = Common.GetInstance().RandomEquip(userid, basenpc, nprob, bprob); if (equip != null) //偷窃成功 { npc.is_steal = (int)TrainHomeStealType.STEAL_YES; if (!tg_train_home.UpdateNpc(npc)) { return(Error((int)ResultType.DATABASE_ERROR)); } AcquireEquip(session, equip); //获得装备信息处理 var logdata = string.Format("{0}_{1}", "EquipSteal", equip.base_id); //记录偷窃获得装备信息 (new Share.Log()).WriteLog(userid, (int)LogType.Get, (int)ModuleNumber.ROLETRAIN, (int)RoleTrainCommand.TRAIN_HOME_NPC_STEAL, logdata); log.BagInsertLog(equip, (int)ModuleNumber.ROLETRAIN, (int)RoleTrainCommand.TRAIN_HOME_NPC_STEAL, 0); //记录日志 } else { extend.steal_fail_count++; extend.Update(); session.Player.UserExtend = extend; if (IsEnterPrison(extend.steal_fail_count)) { new Share.Prison().PutInPrison(userid); } //推送进入监狱 } (new Share.DaMing()).CheckDaMing(userid, (int)DaMingType.武将宅偷窃); return(new ASObject(Common.GetInstance().NpcStealData((int)ResultType.SUCCESS, npc.is_steal))); }