- 好友
- 1
- 在线时间
- 501 小时
- 最后登录
- 2024-12-12
扈从
- UID
- 518607
- 第纳尔
- 1258
- 精华
- 0
- 互助
- 6
- 荣誉
- 1
- 贡献
- 10
- 魅力
- 2
- 注册时间
- 2011-9-23
鲜花( 1) 鸡蛋( 0)
|
打算用魔球的武器触发器写个特殊效果,通过距离与敌人防御状态模拟近战命中,并通过角色属性来判断是否魅惑成功(基础概率30+进攻方等级+进攻方魅力值)-(防守方等级+防守方智力值) 。
变量0为攻击方
变量1为敌方(遍历)
变量2为双方距离
变量3和变量4为双方party id
变量5为敌方的troop id
变量6为攻击方的Team
变量7-10预留存储攻击方概率变量(比如可以增加俘虏等级之类的继续加权),当前7存储等级,8存储魅力,10存储综合运算后的概率基数(即攻击方概率的和)
变量11-15预留存储敌方概率变量,当前11存储等级,12存储智力,15存储最终计算后的概率基数(即攻击方-敌方的差)
变量16存储用于判断概率是否生效的随机数(范围0 - 100,整数型)
变量20存储agents防守状态,0为未防御,1为闪避,2为格挡
- (store_trigger_param_1,":var_0"),#变量1=攻击方角色
- (agent_get_party_id,":var_3",":var_0"),#变量3=变量1的队伍ID
- (1770,":var_6",":var_0"),#变量6=变量0的队伍
- (assign,":var_10",30),#变量10=30
- (2171,":var_7",":var_0"),#变量7=变量0的等级
- (store_add,":var_10",":var_10",":var_7"),#变量10 = 变量10 + 变量7
- (2172,":var_8",":var_0",3),#变量8 = 变量0的魅力
- (store_add,":var_10",":var_10",":var_8"),#变量10 = 变量10 + 变量8 (即30+等级+魅力)
- (try_for_agents,":var_1"),#遍历所有agents,存入变量1
- (1712,":var_1"),#确认agents是否激活有效
- (1704,":var_1"),#确认agents是否为人类
- (1702,":var_1"),#确认agents是否活着
- (neg|1706,":var_1"),#确认agents非盟友
- (agent_get_position,pos2,":var_1"),#获取agents位置,存入pos2
- (get_distance_between_positions_in_meters,":var_2",pos1,pos2),#获得pos1和pos2之间的距离,单位米
- (agent_get_party_id,":var_4",":var_1"),#获取agents ID,存入变量4
- (agent_get_troop_id,":var_5",":var_1"),#获取agents的troop ID,存入变量5
- (assign,":var_15",":var_10"),#变量15 = 变量10
- (2171,":var_11",":var_1"),#变量11 = 变量1的等级
- (store_sub,":var_15",":var_15",":var_11"),#变量15 = 变量15 - 等级
- (2172,":var_12",":var_1",2),#智力
- (store_sub,":var_15",":var_15",":var_12"),#变量15 = 变量15 - 智力
- (store_random_in_range,":var_16",0,100),#在0-100中随机获得一个随机数(整数)
- (try_begin),
- <font color="#ff0000"> (neq|1507,":var_5"),#确认agents不是英雄(NPC、领主)</font>
- (neg|gt,":var_2",1),#变量2 即pos1和pos2之间的距离小于等于1 用于判断近战,根据武器长度设置
- (neg|eq,":var_3",":var_4"),#变量3不等于变量4 即agents和攻击方角色不是一个队伍
- (1764,":var_20",":var_1"),#获取agents的防守行动,存入变量20,
- (try_begin),
- (eq,":var_20",0),#agents未防御
- (ge,":var_15",":var_16"),#变量15大于等于变量14 变量15为运算后的概率,大于0-100生成的随机数以判断是否触发效果
- (1771,":var_1",":var_6"),#设置变量1的阵营为变量6 即不同阵营的敌人变为友方阵营
- (1732,":var_1"),#强制重置agents行为
- (party_add_prisoners,":var_3",":var_5",1),#将被魅惑的敌人战后当成俘虏
- (party_remove_members,":var_4",":var_5",1),#将被魅惑的敌人移除原本队伍,防止战后重新开战,即便上一行未能成功加入俘虏名单。
- (else_try),
- (eq,":var_20",1),#agents在闪避
- (else_try),
- (eq,":var_20",2),#agents在防御
- (try_end),
- (try_end),
- (try_end),
复制代码 其中(neq|1507,":var_5"),也就是troop_is_hero无论改是或否都会导致后续代码不生效。
在预想中该代码是预防对方领主或特殊NPC被魅惑并加入我方的代码,返回值按介绍应该是True或False。
删除该行代码后整段代码都可以正常运行。
因为泛用性的考虑个人不想给(try_for_agents)加上范围,毕竟许多MOD和mod的更新都可能会导致troop列表的变动,因此来求助神通广大的朋友。
|
|