def skill_FireSurroundBlast1(self, _data, _range): for i in range(0, 8): _x = int(self.FACE_TO[i][0] * _range + self.pos_pixel_x) _y = int(self.FACE_TO[i][1] * _range + self.pos_pixel_y) _data.environment.units.append(environment.Unit('SkillFireSurroundBlast1', _data.dictionary)) _data.environment.units[-1].pos_pixel_x = _x _data.environment.units[-1].pos_pixel_y = _y _data.environment.units[-1].data['knock_point_x'] = self.pos_pixel_x _data.environment.units[-1].data['knock_point_y'] = self.pos_pixel_y self.skill_FireBall(_data)
def script_map_fire(self, _data): if _data.frames % 2 == 0: self.image_index += 1 if self.image_index == 7: _data.environment.units.append(environment.Unit('SkillMapFire1', _data.dictionary)) _data.environment.units[-1].pos_pixel_x = self.pos_pixel_x _data.environment.units[-1].pos_pixel_y = self.pos_pixel_y _data.environment.units[-1].data['del_frame'] = _data.frames + 90 if self.image_index >= self.have_img: _data.del_unit(self) return self.image = self.images[self.image_index]
def script_fire_storm(self, _data): if _data.frames % 4 == 0: self.image_index += 1 if self.image_index >= self.have_img: _data.environment.units.append(environment.Unit('SkillFireStorm2', _data.dictionary)) _data.environment.units[-1].pos_pixel_x = self.pos_pixel_x _data.environment.units[-1].pos_pixel_y = self.pos_pixel_y _data.environment.units[-1].data['alert_distance'] = 2000 _data.environment.units[-1].data['speed'] = 6 _data.environment.units[-1].data['attack'] = 20 _data.environment.units[-1].data['attack_cd'] = False _data.del_unit(self) return self.image = self.images[self.image_index]
def skill_FireStorm(self, _data): if not self.data['FireStorm'] : return _res = _data.frames - self.data['FireStormSF'] if _res == 0: self.pause_move = True common_methods.CommonMethods.handle_mixer('spl Fire Storm', _data) for i in range(0, 4): _data.environment.units.append(environment.Unit('SkillFireStorm1', _data.dictionary)) _data.environment.units[-1].pos_pixel_x = self.pos_pixel_x + random.choice([-1, 1]) * random.randint(200, 400) _data.environment.units[-1].pos_pixel_y = self.pos_pixel_y + random.choice([-1, 1]) * random.randint(150, 300) self.data['FireStormCD'] = True elif _res == 50: common_methods.CommonMethods.handle_mixer('spl Fire Storm', _data) for i in range(0, 4): _data.environment.units.append(environment.Unit('SkillFireStorm1', _data.dictionary)) _data.environment.units[-1].pos_pixel_x = self.pos_pixel_x + random.choice([-1, 1]) * random.randint(200, 400) _data.environment.units[-1].pos_pixel_y = self.pos_pixel_y + random.choice([-1, 1]) * random.randint(150, 300) elif _res == 91: self.pause_move = False elif _res == 360: self.data['FireStorm'] = False self.data['FireStormCD'] = False
def script_fire_surround_blast(self, _data): if _data.frames % 2 == 0: self.image_index += 1 if self.image_index >= self.have_img: _data.environment.units.append(environment.Unit('SkillFireSurroundBlast2', _data.dictionary)) _data.environment.units[-1].pos_pixel_x = self.pos_pixel_x _data.environment.units[-1].pos_pixel_y = self.pos_pixel_y _data.environment.units[-1].data['attack'] = 20 _data.environment.units[-1].data['attack_cd'] = False _data.environment.units[-1].data['knock_point_x'] = self.data['knock_point_x'] _data.environment.units[-1].data['knock_point_y'] = self.data['knock_point_y'] _data.del_unit(self) return self.image = self.images[self.image_index]
def script_map_fire_1(self, _data): if _data.frames % 30 == 6: for i in range(0, 6): _data.environment.units.append(environment.Unit('SkillMapFire2', _data.dictionary)) _data.environment.units[-1].pos_pixel_x = self.pos_pixel_x _data.environment.units[-1].pos_pixel_y = self.pos_pixel_y _data.environment.units[-1].data['del_frame'] = _data.frames + 60 _x = random.randint(-3, 3) _y = random.randint(-3, 3) _side_length = math.hypot(_x, _y) + 0.1 _data.environment.units[-1].data['speed_x'] = int(_x / _side_length * 10) _data.environment.units[-1].data['speed_y'] = int(_y / _side_length * 10) _data.environment.units[-1].data['alert_distance'] = 2000 _data.environment.units[-1].data['attack'] = 20 _data.environment.units[-1].data['attack_cd'] = False
def script_fire_ball(self, _data): if _data.frames % 2 == 0: self.image_index += 1 if self.image_index >= self.have_img: _data.environment.units.append(environment.Unit('SkillFireBall2', _data.dictionary)) _data.environment.units[-1].pos_pixel_x = self.pos_pixel_x _data.environment.units[-1].pos_pixel_y = self.pos_pixel_y _data.environment.units[-1].data['alert_distance'] = 2000 _data.environment.units[-1].data['speed'] = 10 _data.environment.units[-1].data['attack'] = 20 _data.environment.units[-1].data['attack_cd'] = False _data.environment.units[-1].data['del_frame'] = _data.frames + 30 _data.environment.units[-1].data['knock_point_x'] = self.pos_pixel_x _data.environment.units[-1].data['knock_point_y'] = self.pos_pixel_y _data.del_unit(self) return self.image = self.images[self.image_index]
def skill_FireBall(self, _data): if not self.data['FireBall'] : return _res = _data.frames - self.data['FireBallSF'] if _res == 0: _data.environment.units.append(environment.Unit('SkillFireBall1', _data.dictionary)) _data.environment.units[-1].pos_pixel_x = _data.player.pos_pixel_x _data.environment.units[-1].pos_pixel_y = _data.player.pos_pixel_y + 40 _data.environment.units[-1].data['knock_point_x'] = self.pos_pixel_x _data.environment.units[-1].data['knock_point_y'] = self.pos_pixel_y common_methods.CommonMethods.handle_mixer('spl Ready2', _data) self.data['FireBallCD'] = True elif _res == 20: common_methods.CommonMethods.handle_mixer('spl Fire Ball', _data) elif _res == 80: self.data['FireBall'] = False self.data['FireBallCD'] = False
def skill_SmallFire(self, _data): if not self.data['SmallFire'] : return _res = _data.frames - self.data['SmallFireSF'] if _res == 0: _data.environment.units.append(environment.Unit('SkillSmallFire', _data.dictionary)) _data.environment.units[-1].pos_pixel_x = int((5 * _data.player.pos_pixel_x + self.pos_pixel_x) / 6) _data.environment.units[-1].pos_pixel_y = int((5 * _data.player.pos_pixel_y + self.pos_pixel_y) / 6 + 40) _data.environment.units[-1].data['knock_point_x'] = self.pos_pixel_x _data.environment.units[-1].data['knock_point_y'] = self.pos_pixel_y self.data['SmallFireCD'] = True self.pause_move = True common_methods.CommonMethods.handle_interact('dmspl Boom.1', _data) elif _res == 30: self.pause_move = False elif _res == 80: self.data['SmallFire'] = False self.data['SmallFireCD'] = False
def skill_MapFire(self, _data): if not self.data['MapFire'] : return _res = _data.frames - self.data['MapFireSF'] if _res == 0: common_methods.CommonMethods.handle_mixer('spl Map Fire', _data) for i in range(0, 4): _data.environment.units.append(environment.Unit('SkillMapFire', _data.dictionary)) _data.environment.units[-1].pos_pixel_x = _data.player.pos_pixel_x + random.randint(-400, 400) _data.environment.units[-1].pos_pixel_y = _data.player.pos_pixel_y + random.randint(-300, 300) self.data['MapFireCD'] = True self.pause_move = True elif _res == 50: common_methods.CommonMethods.handle_mixer('spl Map Fire', _data) elif _res == 90: self.pause_move = False elif _res == 1080: self.data['MapFire'] = False self.data['MapFireCD'] = False
def handle_effect(_effect_str, _data): if _effect_str[0:3] == 'nul': # 无效果 return elif _effect_str[0:3] == 'bct': # 将本Block替换为xxx _data.environment.block[_data.player.pos_matrix_x][_data.player.pos_matrix_y] = \ environment.Block(_effect_str[4:], _data.dictionary.block_dict) return elif _effect_str[0:3] == 'bcf': # 将玩家面对的Block替换为xxx _data.environment.block[_data.player.next_pos_matrix_x][_data.player.next_pos_matrix_y] = \ environment.Block(_effect_str[4:], _data.dictionary.block_dict) return elif _effect_str[0:3] == 'pgi': # 玩家得到xxx(item) _data.player.add_item(_effect_str[4:]) return elif _effect_str[0:3] == 'psi': # 玩家的xxx(item)数量-1 _data.player.sub_item(_effect_str[4:]) return elif _effect_str[0:3] == 'php': # 玩家的hp = hp + xxx _data.player.add_hp(int(_effect_str[4:])) return elif _effect_str[0:3] == 'psp': # 玩家的sp = hp + xxx _data.player.add_sp(int(_effect_str[4:])) return elif _effect_str[0:3] == 'pmb': # 玩家move by _strs = _effect_str[4:].split(',') _data.player.pos_pixel_x += int(_strs[0]) _data.player.pos_pixel_y += int(_strs[1]) return elif _effect_str[0:3] == 'pmt': # 玩家move to _strs = _effect_str[4:].split(',') _data.player.pos_pixel_x = int(_strs[0]) _data.player.pos_pixel_y = int(_strs[1]) return elif _effect_str[0:3] == 'pca': # 玩家近身攻击xxx,yyy _strs = _effect_str[4:].split(',') _data.player_close_attack(int(_strs[0]), int(_strs[1])) return elif _effect_str[0:3] == 'ptt': # 将玩家转移至xxx if _effect_str[4:] != 'home': _data.next_environment = _effect_str[4:] + '_environment' mx, my = _data.hell_environment.units[ 0].pos_pixel_x - 600, _data.hell_environment.units[ 0].pos_pixel_y - 600 _data.player_next_pos_pixel_x, _data.player_next_pos_pixel_y = mx, my else: key = str(_data.player.pos_matrix_x) + ',' + str( _data.player.pos_matrix_y) _data.player_next_pos_pixel_x = 320 _data.player_next_pos_pixel_y = 160 if key in _data.home_index_dict: _data.next_environment = 'homes[' + str( _data.home_index_dict[key]) + ']' else: _data.create_home( _data.player.pos_matrix_x, _data.player.pos_matrix_y, _data.environment.block[_data.player.pos_matrix_x][ _data.player.pos_matrix_y].name) _data.next_environment = 'homes[' + str( _data.home_index_dict[key]) + ']' _data.transforming = True return elif _effect_str[0:3] == 'uio': # 开关显示ui if _effect_str[4:] == 'box': _data.show_box_ui = ~_data.show_box_ui return elif _effect_str[0:3] == 'ugt': # 在玩家位置创建unit _data.environment.units.append( environment.Unit(_effect_str[4:], _data.dictionary)) _data.environment.units[-1].pos_pixel_x = _data.player.pos_pixel_x _data.environment.units[-1].pos_pixel_y = _data.player.pos_pixel_y return elif _effect_str[0:3] == 'ugf': # 在玩家面对位置创建unit _data.environment.units.append( environment.Unit(_effect_str[4:], _data.dictionary)) _data.environment.units[ -1].pos_pixel_x = _data.player.pos_pixel_x + _data.player.FACE_TO[ _data.player.face_to_index][0] * 40 _data.environment.units[ -1].pos_pixel_y = _data.player.pos_pixel_y + _data.player.FACE_TO[ _data.player.face_to_index][1] * 40 return elif _effect_str[0:3] == 'uga': # 在指定位置创建unit _strs = _effect_str[4:].split(',') _data.environment.units.append( environment.Unit(_strs[0], _data.dictionary)) _data.environment.units[-1].pos_pixel_x = int(_strs[1]) _data.environment.units[-1].pos_pixel_y = int(_strs[2]) return print("Error:effect string not exist")