So impressive how you were able to make the otherwise very tedious village looting so immersive!
Ah yes, I was hoping nobody would notice... That's actually the Lady owner of the village. Unlike most troops ladies have their clothing set by a script, which I haven't copied over yet. Got her with a nice jav throw, though.fladin said:Very impressive A lot of new features are happening everywhere (and that bird!!!)
That half-naked women killed me
Drone! It's still devilishly simple really, all it is is moving the player forward and animating the bird to the front of the camera. Enemy AI will even try to shoot you out of the sky!DtheHun said:I love your drone. The animation, control, camera follow, the whole thing looks damn good!
(the real time pillaging is also great)
Ruthven said:Thanks everyone!
Ah yes, I was hoping nobody would notice... That's actually the Lady owner of the village. Unlike most troops ladies have their clothing set by a script, which I haven't copied over yet. Got her with a nice jav throw, though.fladin said:Very impressive A lot of new features are happening everywhere (and that bird!!!)
That half-naked women killed me
Drone! It's still devilishly simple really, all it is is moving the player forward and animating the bird to the front of the camera. Enemy AI will even try to shoot you out of the sky!DtheHun said:I love your drone. The animation, control, camera follow, the whole thing looks damn good!
(the real time pillaging is also great)
The raven model/animation was made by CWE team, so credits to them as well!
You're in luck! At the time CWE made the birds (there is also a pigeon) it did require WSE; luckily the necessary operations have since been added to Native! (Thanks to Viking Conquest I believe.)Mr.Milker said:Does the bird require WSE?
(we'd be quite interested in this technology for TLD)
raven_triggers = [
#Init: Spawn raven scene prop, set player as raven if they were in ravenmode when they left the last scene
#Note: This also animates the scene prop using a cycle loop - move it/adapt to flying code for things like gliding, variable wingbeats, etc
(ti_after_mission_start, 0, ti_once,[],[
(try_begin),
(neq, "$ravenmode", 1),
(assign, "$ravenmode", 0), #Reset if killed (2)
(else_try),
(eq, "$ravenmode", 1),
(get_player_agent_no, ":player"),
(agent_get_position, pos20, ":player"),
(set_spawn_position, pos20),
(try_for_range, ":inventory_slot", 0, 9),
(agent_get_item_slot, ":item_id", ":player", ":inventory_slot"),
(troop_add_item, "trp_raven", ":item_id"),
(troop_set_inventory_slot, "trp_raven", ":inventory_slot", ":item_id"),
(try_end),
(agent_set_no_dynamics, ":player", 1),
(troop_get_type, ":plyrskn", "$g_player_troop"),
(troop_set_type, "trp_raven", ":plyrskn"),
(troop_set_name, "trp_raven", "@{playername}"),
(spawn_agent, "trp_raven"),
(assign, "$player_char", reg0), #NEW:
(agent_set_team, "$player_char", 0),
(try_begin),
(agent_get_horse, ":horse", ":player"),
(gt, ":horse", -1),
(agent_set_horse, ":player", -1), # WSE operation!
(agent_set_horse, "$player_char", ":horse"), # WSE operation!
(try_end),
(position_move_z, pos20, 1000), #increase 3 to 10
(agent_set_position, ":player", pos20),
(agent_set_visibility, ":player", 0),
(mission_disable_talk),
(troop_equip_items, "trp_raven"),
(assign, "$ravenmode", 1),
(try_end),
(try_begin),
(get_scene_boundaries, pos11,pos12),
(position_get_x, ":xpos", pos12), #x max
(val_div, ":xpos", 2),
(init_position, pos20),
(position_set_x, pos20, ":xpos"),
(position_set_y, pos20, ":xpos"), #use middle of X for X and Y value because square terrain
(position_move_z, pos20, 15000), #move z pos 150m up
(set_spawn_position, pos20),
(spawn_scene_prop, "spr_explorer_raven"),
(prop_instance_deform_in_cycle_loop, reg0, 0, 25, 1300),
(try_end),
]),
#Switch between raven/player
(0, 0, 3, [
(neq, "$ravenmode", 2),
(key_clicked, key_m),
],
[
(set_fixed_point_multiplier, 100),
(get_player_agent_no, ":player"),
(try_begin),
(eq, "$ravenmode", 0),
# (assign, "$player_char", ":player"),
(agent_get_position, pos20, ":player"),
#(set_player_troop, "trp_raven"),
# (position_set_z, pos20, 3000*100), #bigge
(set_spawn_position, pos20),
(try_for_range, ":inventory_slot", 0, 9),
(agent_get_item_slot, ":item_id", ":player", ":inventory_slot"),
(troop_add_item, "trp_raven", ":item_id"),
(troop_set_inventory_slot, "trp_raven", ":inventory_slot", ":item_id"),
(try_end),
(agent_set_no_dynamics, ":player", 1),
(troop_get_type, ":plyrskn", "$g_player_troop"),
(troop_set_type, "trp_raven", ":plyrskn"),
(troop_set_name, "trp_raven", "@{playername}"),
(spawn_agent, "trp_raven"),
(assign, "$player_char", reg0), #NEW:
(agent_set_team, "$player_char", 0),
(try_begin),
(agent_get_horse, ":horse", ":player"),
(gt, ":horse", -1),
(agent_set_horse, ":player", -1), # WSE operation!
(agent_set_horse, "$player_char", ":horse"), # WSE operation!
(try_end),
(position_move_z, pos20, 1000), #increase 3 to 10
(agent_set_position, ":player", pos20),
(agent_set_visibility, ":player", 0),
(mission_disable_talk),
(troop_equip_items, "trp_raven"),
(assign, "$ravenmode", 1),
(else_try),
(eq, "$ravenmode", 1),
(agent_get_position, pos20, "$player_char"),
(agent_set_visibility, "$player_char", 0),
(try_begin),
(agent_get_horse, ":horse", "$player_char"),
(gt, ":horse", -1),
(agent_set_horse, "$player_char", -1), # WSE operation!
(agent_set_horse, ":player", ":horse"), # WSE operation!
(try_end),
(agent_fade_out, "$player_char"),
(position_move_y, pos20, 155), #avoid old player/horse
(agent_set_position, ":player", pos20),
(agent_set_visibility, ":player", 1),
(agent_set_no_dynamics, ":player", 0),
(mission_enable_talk),
(assign, "$ravenmode", 0),
(try_end),
]),
#Animating the bird while NPC/dead - original CWE code
(0, 0, 0, [
(this_or_next|eq, "$ravenmode", 0),
(eq, "$ravenmode", 2),
],
[
(scene_prop_get_num_instances, ":var2", "spr_explorer_raven"),
(ge, ":var2", 1),
(assign, ":var1", "spr_explorer_raven"),
(try_for_range, ":var3", 0, ":var2"),
(scene_prop_get_instance, ":var4", ":var1", ":var3"),
(try_begin),
(scene_prop_slot_eq, ":var4", 41, 0),
(try_begin),
(try_begin),
(scene_prop_get_slot, ":var5", ":var4", 44),
(ge, ":var5", 0),
(prop_instance_get_position, pos1, ":var5"),
(else_try),
# (get_player_agent_no, ":player"),
# (agent_get_position, pos1, ":player"), #use player pos as origin - doesnt worq but thats ok
(prop_instance_get_starting_position, pos1, ":var4"),
(try_end),
(try_begin),
(prop_instance_get_position, pos2, ":var4"),
(get_distance_between_positions, ":var6", pos2, pos1),
(le, ":var6", 200),
(try_begin),
(neg|scene_prop_slot_eq, ":var4", 45, 1),
(position_move_z, pos2, 700),
(try_end),
(position_move_x, 2, 4000),
(prop_instance_set_position, ":var4", pos2),
(prop_instance_enable_physics, ":var4", 1),
(try_end),
(assign, ":var7", 1),
(try_begin),
(prop_instance_is_animating, ":var8", ":var4"),
(eq, ":var8", 1),
(assign, ":var7", 0),
(prop_instance_get_position, pos3, ":var4"),
(prop_instance_get_animation_target_position, 2, ":var4"),
(get_distance_between_positions, ":var9", pos2, pos3),
(le, ":var9", 50),
(assign, ":var7", 1),
(try_end),
(eq, ":var7", 1),
(scene_prop_get_slot, ":var10", ":var4", 38),
(scene_prop_get_slot, ":var11", ":var4", 39),
(val_add, ":var10", 30),
(position_rotate_z, pos1, ":var10"),
(position_move_x, 1, 4000),
(try_begin),
(neg|scene_prop_slot_eq, ":var4", 45, 1),
(store_add, ":var12", 700, ":var11"),
(else_try),
(assign, ":var12", ":var11"),
(try_end),
(position_move_z, pos1, ":var12"),
(try_begin),
(position_get_distance_to_terrain, ":var13", pos1),
(store_div, ":var14", 700, 2),
(this_or_next|ge, 0, ":var13"),
(ge, ":var14", ":var13"),
(position_set_z_to_ground_level, pos1),
(position_move_z, pos1, ":var12"),
(try_end),
(prop_instance_get_position, pos2, ":var4"),
(get_distance_between_positions, ":var15", pos2, pos1),
(val_div, ":var15", 9),
(prop_instance_animate_to_position, ":var4", pos1, ":var15"),
(try_begin),
(ge, ":var10", 360),
(assign, ":var10", 0),
(store_random_in_range, ":var11", 0, 16),
(val_mul, ":var11", 80),
(scene_prop_set_slot, ":var4", 39, ":var11"),
(try_end),
(scene_prop_set_slot, ":var4", 38, ":var10"),
(try_end),
(else_try),
(scene_prop_slot_eq, ":var4", 41, 1),
(set_fixed_point_multiplier, 100),
(position_set_x, pos0, 2500),
(position_set_y, pos0, 80),
(position_set_z, pos0, 0),
(prop_instance_dynamics_set_properties, ":var4", 0),
(position_set_x, pos0, 0),
(position_set_y, pos0, 0),
(position_set_z, pos0, -800),
(prop_instance_dynamics_set_omega, ":var4", 0),
(try_begin),
(prop_instance_get_position, pos1, ":var4"),
(particle_system_burst, "psys_hit_bird_blood", pos1, 1),
(particle_system_burst, "psys_hit_bird_feathers", pos1, 1),
(position_get_distance_to_ground_level, ":var15", pos1),
(le, ":var15", 100),
(position_get_rotation_around_z, ":var10", pos1),
#(position_align_to_ground, pos1, 1, 1), #WSE operation!
(position_rotate_x, pos1, -90),
(position_rotate_z, pos1, ":var10"),
(prop_instance_enable_physics, ":var4", 0),
(prop_instance_set_position, ":var4", pos1),
(position_move_z, pos1, -1),
(prop_instance_animate_to_position, ":var4", pos1, 100000000),
(scene_prop_set_slot, ":var4", 41, 2),
(scene_prop_get_slot, ":var16", ":var4", 43),
(prop_instance_deform_to_time, ":var4", ":var16"),
(try_end),
(try_end),
(try_end),
]),
#Animating the bird while flying
(0, 0, 0,
[
(eq, "$ravenmode", 1),
],
[
(set_fixed_point_multiplier, 100),
(assign, ":var1", "spr_explorer_raven"),
(scene_prop_get_num_instances, ":var2", ":var1"),
(ge, ":var2", 1),
(mission_cam_get_position, pos20),
(get_player_agent_no, ":player"),
(agent_get_position, pos21, ":player"),
(position_copy_rotation, pos21, pos20),
(try_begin),
(game_key_is_down, 0), #move forward
(position_move_y, pos21, 42),
(else_try),
(this_or_next|game_key_is_down, 1), #move backward
(game_key_is_down, 23), #order 1 = Hold Position
(position_move_y, pos21, 1),
(position_move_z, pos21, 9),
(else_try),
(position_move_y, pos21, 25),
(try_end),
(try_begin),
(game_key_is_down, 2), #move left
(position_move_x, pos21, 15),
(else_try),
(game_key_is_down, 3), #move right
(position_move_x, pos21, -15),
(try_end),
(agent_set_position, ":player", pos21),
(try_for_range, ":var3", 0, ":var2"),
(scene_prop_get_instance, ":var4", ":var1", ":var3"),
(mission_cam_get_position, pos20),
(position_move_y, pos20, 400),
(position_move_z, pos20, -80),
(position_rotate_x, pos20, 5),
(prop_instance_set_position, ":var4", pos20),
(try_begin),
(game_key_is_down, 0), #move forward
(position_rotate_x, pos20, -15),
(position_move_y, pos20, 200),
(else_try),
(this_or_next|game_key_is_down, 1), #move backward
(game_key_is_down, 23), #order 1 = Hold Position
(position_rotate_x, pos20, 35),
(try_end),
(try_begin),
(game_key_is_down, 2), #move left
(position_rotate_y, pos20, 45),
(else_try),
(game_key_is_down, 3), #move right
(position_rotate_y, pos20, -45),
(try_end),
(prop_instance_animate_to_position, ":var4", pos20, 15),
(try_end),
]),
(0, 0, 3, #Check if raven collides with any scene prop
[
(eq, "$ravenmode", 1),
(scene_prop_get_instance, ":raven", "spr_explorer_raven"),
(position_get_distance_to_terrain, ":ground", pos20),
(this_or_next|le, ":ground", 0),
(prop_instance_intersects_with_prop_instance, ":raven", -1),
],
[
#(display_message,"@Bang!"),
(play_sound, "snd_mp_arrow_hit_target"),
(get_player_agent_no, ":player"),
(agent_get_position, pos20, "$player_char"),
(agent_set_visibility, "$player_char", 0),
(try_begin),
(agent_get_horse, ":horse", "$player_char"),
(gt, ":horse", -1),
(agent_set_horse, "$player_char", -1), # WSE operation!
(agent_set_horse, ":player", ":horse"), # WSE operation!
(try_end),
(agent_fade_out, "$player_char"),
(position_move_x, pos20, 55), #avoid old player/horse
(agent_set_position, ":player", pos20),
(agent_set_visibility, ":player", 1),
(agent_set_no_dynamics, ":player", 0),
(assign, "$ravenmode", 0),
]),
]
Easter Cow said:Nice work Ruthven!!
Mr.Milker said:Coolness, thanks a bunch!
Thanks, folks.BNS Marko said:Amazing implementation, Ruthven!
Thank you! I appreciate the sentiment - but most of my "prestige" is really totally undeserved. Fake it 'til you make it!SupaNinjaMan said:I just want this to appear in my new replies.
Fantastic work!
Not that I would expect any less from such a prestigious forum vet as Ruthven.
Hey, thank you! You really should give yourself some credit as well, then. I never would have started this project without your town scenes - in fact they were probably one of the biggest factors in its inspiration. I wanted to bring those scenes from the background to the forefront of the game. There have been some great comments already from people saying stuff like "I've played M&B for a long time, and only now am actually appreciating the scenes for themselves." Also I believe many of the "Skyrim" comparisons are directly your fault!The Bowman said:I have been on these forums since 2008, and tried countless mods, but I can safely say that this is one of the most innovative mods I ever happened to stumble on. Heck, the ModDb page even shows up on my suggested articles while surfing the mobile browser. Keep it up!
Thank you!OldGreyBeard said:Absolutely amazing!!
Thanks for your efforts!
That's... A great question. Ultimately, I wanted to recreate the classic MB experience in a kind of open-world setting, replacing "game menu gameplay" with tangible, visible, playable experiences. Everything else is just finding out how to work with this framework instead of being totally hindered by it. Clearly, I love this game, but I always found Native to be rather bloated with features that end up being fairly insignificant, or are very unintuitive.Khamukkamu said:Amazing as usual, Ruthven!
I'm not sure if you've explained it before, but what is currently the 'goal' for the player? So aside from roaming around, hiring, raiding, and besieging places, what do you see as the primary objective for the player / character?
In vanilla M&B, it is usual to conquer Calradia. Do you see Explorer! expanding towards that end, or right now, the goal is simply the name of the mod, to be an Explorer!
Thanks again for such innovative work!
578 said:Great job man, I wanted to ask though, any news on the build which is at works at the moment?
Funny you should ask.578 said:Great job man, I wanted to ask though, any news on the build which is at works at the moment? Also, a slight request, would it be possible to implement a facial textures mod in the game, as well as some armour OSP packs since the adventure this time is much more personal with your character since you get to see him/her at all times? Thanks, definitely one of the best mods out there for me personally.
I'm not exactly sure what you're asking. Are there specific OSPs you want me to add?578 said:Great job man, I wanted to ask though, any news on the build which is at works at the moment? Also, a slight request, would it be possible to implement a facial textures mod in the game, as well as some armour OSP packs since the adventure this time is much more personal with your character since you get to see him/her at all times? Thanks, definitely one of the best mods out there for me personally.
Ruthven said:578 said:Great job man, I wanted to ask though, any news on the build which is at works at the moment?Funny you should ask.578 said:Great job man, I wanted to ask though, any news on the build which is at works at the moment? Also, a slight request, would it be possible to implement a facial textures mod in the game, as well as some armour OSP packs since the adventure this time is much more personal with your character since you get to see him/her at all times? Thanks, definitely one of the best mods out there for me personally.
You can download the newest version (ExplorerAlpha) here:
https://www.moddb.com/mods/explorer1/downloads/explorer-alpha
There are some cool new features, but also some broken/half-implemented stuff. I'll update the OP later, I'm too lazy to write all the changes now.
I'm not exactly sure what you're asking. Are there specific OSPs you want me to add?578 said:Great job man, I wanted to ask though, any news on the build which is at works at the moment? Also, a slight request, would it be possible to implement a facial textures mod in the game, as well as some armour OSP packs since the adventure this time is much more personal with your character since you get to see him/her at all times? Thanks, definitely one of the best mods out there for me personally.