Can someone help me how i can translate old A6 syntax to new c_trace and c_move functions. Here is the axysmovement code:


DEFINE move_x,skill22;
DEFINE move_y,skill23;
DEFINE move_z,skill24;
DEFINE force_x,skill25;
DEFINE force_y,skill26;
DEFINE force_z,skill27;
DEFINE velocity_x,skill28;
DEFINE velocity_y,skill29;
DEFINE velocity_z,skill30;
DEFINE animdist,SKILL31;
DEFINE animdist2,SKILL32;
DEFINE animblend,SKILL33;
DEFINE pan_to,SKILL34;
DEFINE jumping_mode,SKILL35;
DEFINE reldist_x,skill36;
DEFINE reldist_y,skill37;
DEFINE reldist_z,skill38;
DEFINE z_offset,skill39;

var space_press = 0;
var ctrl_press = 0;
var camera_move_to[3];
var camera_velocity[3];
var camera_force[3];
var player_ground_dist;
var wall_jump_direction = 1;
var cam_dist = -350;
var player_movement_mode = 0;
var attack_state = 0;
var attack_direction = 1;

var ledge_direction = 1;
var ledge_detect = 1;
var ledge_climb_z;

var temp2[6];
var temp3[6];

string player_frame;
string player_blend_frame;

entity* sword;

FUNCTION main() {
shadow_offset = 0.5;
move_friction = 0.1;
video_switch(7,32,1);
level_load("level1.wmb");
}

ACTION sword_attach() {
sword = my;
my.passable = on;
my.shadow = on;
proc_late();
WHILE (you != null) {
my.material = you.material;
my.scale_x = you.scale_x;
my.scale_y = you.scale_y;
my.scale_z = you.scale_z;
vec_set(my.x,you.x);
vec_set(my.pan,you.pan);
my.frame = you.frame;
my.next_frame = you.next_frame;
wait(1);
}
ent_remove(my);
return;
}

ACTION shield_attach() {
my.passable = on;
my.shadow = on;
proc_late();
WHILE (you != null) {
my.material = you.material;
my.scale_x = you.scale_x;
my.scale_y = you.scale_y;
my.scale_z = you.scale_z;
vec_set(my.x,you.x);
vec_set(my.pan,you.pan);
my.frame = you.frame;
my.next_frame = you.next_frame;
wait(1);
}
ent_remove(my);
return;
}

ACTION player_action {
player = my;
my.narrow = on;
my.fat = off;
c_setminmax(my);
my.shadow = on;
my.pan_to = 360;

my.z_offset = -7;

trace_mode = ignore_me+ignore_push+ignore_passable+ignore_sprites+use_box;
my.z -= trace(vector(my.x,my.y,my.z + my.z_offset),vector(my.x,my.y,my.z - 4000));
player_movement_mode = 0;

you = ent_create("apsword.mdl",my.x,sword_attach);
you = ent_create("apshield.mdl",my.x,shield_attach);

WHILE (1) {
handle_movement();
handle_gravity();
handle_animations();
handle_camera();
move_mode = ignore_passable + glide;
ent_move(my.reldist_x,my.move_x);

//////////////////////////////
// After ent_move, if player is below ground, set player at ground position (this stops the bobbing effect)
//////////////////////////////
IF (player_movement_mode <= 0) {
vec_set(temp,my.x);
temp.z -= 4000;
trace_mode = ignore_me+ignore_push+ignore_passable+ignore_sprites+use_box;
result = trace(vector(my.x,my.y,my.z + my.z_offset),temp);
IF (result < 0) { my.z -= result; my.velocity_z = 0; my.force_z = 0; my.move_z = 0; my.reldist_z = 0; }
}
wait(1);
}
}

var mouse_movement_direction[3];

FUNCTION handle_movement() {
IF (mouse_right == 1) {
IF (mouse_force.x > 0 || mouse_movement_direction.x == 1) { mouse_movement_direction.x = 1; key_cur = 1; }
IF (mouse_force.x < 0 || mouse_movement_direction.x == -1) { mouse_movement_direction.x = -1; key_cul = 1; }
}
IF (mouse_left == 1) { key_ctrl = 1; }
IF (mouse_force.y > 0) { key_cuu = 1; }
IF (mouse_force.y < 0) { key_cud = 1; }
IF (key_w == 1) { key_cuu = 1; }
IF (key_s == 1) { key_cud = 1; }
IF (key_a == 1) { key_cul = 1; }
IF (key_d == 1) { key_cur = 1; }

IF (player_movement_mode == 1) { //ledge hanging
IF (ledge_direction == 1) {
IF (my.pan_to < 360) {
my.pan_to += 30 * time;
IF (my.pan_to > 360) { my.pan_to = 360; }
}
}
IF (ledge_direction == -1) {
IF (my.pan_to > 180) {
my.pan_to -= 30 * time;
IF (my.pan_to < 180) { my.pan_to = 180; }
}
}
my.pan = my.pan_to;
IF (key_cud == 1) && (key_cuu == 0) && (my.animblend == 9) {
player_movement_mode = 0;
my.jumping_mode = 0;
my.move_z = 0;
my.velocity_z = 0;
my.force_z = 0;
my.animblend = 7;
my.animdist2 = 0;
str_cpy(player_blend_frame,"jump");
}
IF (key_cuu == 1) && (key_cud == 0) && (my.animblend == 9) {
ledge_climb_z = my.z + 40;
player_movement_mode = 2;
my.animblend = 3;
my.animdist2 = 0;
str_cpy(player_blend_frame,"climb");
}
return;
}

IF (player_movement_mode == 2 || player_movement_mode == 3 || player_movement_mode == 4) { //climbing up from ledge
IF (ledge_direction == 1) {
IF (my.pan_to < 360) {
my.pan_to += 30 * time;
IF (my.pan_to > 360) { my.pan_to = 360; }
}
}
IF (ledge_direction == -1) {
IF (my.pan_to > 180) {
my.pan_to -= 30 * time;
IF (my.pan_to < 180) { my.pan_to = 180; }
}
}
my.pan = my.pan_to;
IF (player_movement_mode == 2) {
IF (my.z < ledge_climb_z + 10) {
my.z += 3.5 * time;
} ELSE {
player_movement_mode = 3;
}
IF (my.animblend == 10) {
my.animdist += 4.5 * time;
my.animdist = min(100,my.animdist);
}
} ELSE {
IF (player_movement_mode == 3) {
my.x += 3 * ledge_direction * time;
my.z += 4 * time;
IF (my.animdist < 100 && my.animblend == 10) {
my.animdist += 4.5 * time;
IF (my.animdist >= 100) {
my.animdist = 100;
}
}
vec_set(temp,my.x);
temp.x += 30 * ledge_direction;
temp.z = my.z - 36;
trace_mode = ignore_me+ignore_passable;
IF(trace(vector(my.x,my.y,my.z + my.z_offset),temp) == 0) && (my.z - 36 > ledge_climb_z - 10) {
player_movement_mode = 4;
vec_set(my.velocity_x,my.x);
}
} ELSE {
my.x += 3 * ledge_direction * time;
trace_mode = ignore_me+ignore_push+ignore_passable+ignore_sprites+use_box;
result = trace(vector(my.x,my.y,my.z + my.z_offset),vector(my.x,my.y,my.z - 4000));
my.z -= result * time;
// my.reldist_z = -1 * result;
IF (my.animdist < 100) { my.animdist += 4.5 * time; }
IF (my.animdist >= 100) { my.force_z = 0; my.move_z = 0; my.velocity_z = 0; my.reldist_z = 0; my.animblend = 3; my.animdist2 = 0; player_movement_mode = 0; str_cpy(player_blend_frame,"stand"); }
}
}
return;
}

//////////////////////////////
// left/right movement
//////////////////////////////
IF (my.jumping_mode < 3 && my.animblend < 11) {
my.move_x = 0;
IF (key_cur == 1 && key_cul == 0) {
IF (key_shift == 0) {
my.move_x = 15 * time;
IF (my.animblend == 0 || my.animblend == 2) {
my.animdist2 = 0;
my.animblend = 3;
str_cpy(player_blend_frame,"run");
}
} ELSE {
my.move_x = 8 * time;
IF (my.animblend == 0 || my.animblend == 1) {
my.animdist2 = 0;
my.animblend = 3;
str_cpy(player_blend_frame,"walk");
}
}
IF (my.pan_to < 360) {
my.pan_to += 30 * time;
IF (my.pan_to > 360) { my.pan_to = 360; }
}
}
IF (key_cur == 0 && key_cul == 1) {
IF (key_shift == 0) {
my.move_x = -15 * time;
IF (my.animblend == 0 || my.animblend == 2) {
my.animdist2 = 0;
my.animblend = 3;
str_cpy(player_blend_frame,"run");
}
} ELSE {
my.move_x = -8 * time;
IF (my.animblend == 0 || my.animblend == 1) {
my.animdist2 = 0;
my.animblend = 3;
str_cpy(player_blend_frame,"walk");
}
}
IF (my.animblend == 0) { my.animdist2 = 0; my.animblend = 1; }
IF (my.pan_to > 180) {
my.pan_to -= 30 * time;
IF (my.pan_to < 180) { my.pan_to = 180; }
}
}
IF (key_cur == 0 && key_cul == 0) || (key_cur == 1 && key_cul == 1) {
IF (my.animblend == 1 || my.animblend == 2) {
my.animdist2 = 0;
my.animblend = 3;
str_cpy(player_blend_frame,"stand");
}
}
} ELSE {
my.move_x = 15 * wall_jump_direction * time;
IF (my.animblend < 11) {
IF (my.pan_to < 270) {
my.pan_to += 30 * time;
my.pan_to = min(270,my.pan_to);
}
IF (my.pan_to > 270) {
my.pan_to -= 30 * time;
my.pan_to = max(270,my.pan_to);
}
}
}
IF (my.animblend == 8 && my.animdist > 40) { my.pan_to = my.pan; } //don't allow player to rotate upon landing

//////////////////////////////
// scan for ledge grabbing
//////////////////////////////
IF (my.force_z < -2) && ((key_cur == 1 && key_cul == 0) || (key_cur == 0 && key_cul == 1)) {
you = null;
trace_mode = ignore_me+ignore_passable+ignore_models+ignore_sprites+scan_texture;
vec_set(temp.x,vector(my.x,my.y,my.z + 40 + my.z_offset));
IF (key_cur == 1) { vec_set(temp2.x,vector(my.x + 35,my.y,my.z + 40 + my.z_offset)); } ELSE { vec_set(temp2.x,vector(my.x - 35,my.y,my.z + 40 + my.z_offset)); }
result = trace(temp.x,temp2.x);
IF(result == 0) {
ledge_detect = 0; //no ledge in the way
} ELSE {
IF (result > 0) && (ledge_detect == 0) && (tex_flag2 == off) {
IF (key_cur == 1) {
vec_set(temp.x,vector(my.x + 40,my.y,my.z + my.z_offset));
vec_set(temp2.x,vector(my.x + 40,my.y,my.z + 70 + my.z_offset));
} ELSE {
vec_set(temp.x,vector(my.x - 40,my.y,my.z + my.z_offset));
vec_set(temp2.x,vector(my.x - 40,my.y,my.z + 70 + my.z_offset));
}
trace_mode = ignore_me+ignore_passable+ignore_models+ignore_sprites+scan_texture;
result = trace(temp2.x,temp.x);
IF (result > 0) { //if we have a wall in the way and if temp vector is not inside a wall
IF (key_cur == 1) { ledge_direction = 1; } ELSE { ledge_direction = -1; }
my.move_x = 0;
player_movement_mode = 1;
my.animblend = 3;
str_cpy(player_blend_frame,"hang");
my.animdist2 = 0;
}
}
}
}

//////////////////////////////
// combat
//////////////////////////////
IF (key_ctrl == 0 && ctrl_press == 1) { ctrl_press = 0; }
IF (key_ctrl == 1 && ctrl_press == 0 && my.animblend != 3 && my.animblend < 11) {
IF (my.move_x > 0) { attack_direction = 1; }
IF (my.move_x < 0) { attack_direction = -1; }
IF (my.move_x == 0) {
IF (my.pan >= 270) { attack_direction = 1; } ELSE { attack_direction = -1; }
}
ctrl_press = 1;
my.animblend = 11;
my.animdist = 0;
attack_state = 0;
}
IF (my.animblend >= 11) {
IF (attack_direction == 1) {
IF (my.pan_to < 360) {
my.pan_to += 30 * time;
IF (my.pan_to > 360) { my.pan_to = 360; }
}
IF (my.animdist < 40) {
my.move_x = 4.5 * time;
} ELSE {
IF (my.animdist < 60) {
my.move_x = 15 * time;
} ELSE {
my.move_x = 6 * time;
}
}
} ELSE {
IF (my.pan_to > 180) {
my.pan_to -= 30 * time;
IF (my.pan_to < 180) { my.pan_to = 180; }
}
IF (my.animdist < 40) {
my.move_x = -4.5 * time;
} ELSE {
IF (my.animdist < 60) {
my.move_x = -15 * time;
} ELSE {
my.move_x = -6 * time;
}
}
}
}
IF (my.animblend == 11) { my.move_x /= 1.5; }
my.pan = my.pan_to;
}

FUNCTION handle_gravity() {
IF (player_movement_mode != 0) { //ledge hanging etc
my.move_z = 0;
return;
}
trace_mode = ignore_me+ignore_push+ignore_passable+ignore_sprites+use_box;
result = trace(vector(my.x,my.y,my.z + my.z_offset),vector(my.x,my.y,my.z - 4000));
player_ground_dist = result;

//////////////////////////////
// jump movement
//////////////////////////////
IF (key_space == 0 && space_press == 1) { space_press = 0; }
IF (key_space == 1 && space_press == 0 && my.jumping_mode == 0 && my.animblend != 3 && player_ground_dist < 3) {
my.jumping_mode = 1;
space_press = 1;
my.force_z = 18;
my.animdist2 = 0;
my.animblend = 3;
str_cpy(player_blend_frame,"forwardflip");
}

//////////////////////////////
// wall jumping
////////////////////////////
IF (key_space == 1 && space_press == 0 && (my.jumping_mode == 2 || my.jumping_mode == 4 || my.animblend == 8)) {
you = null;
trace_mode = ignore_me+ignore_push+ignore_passable+ignore_sprites;
result = trace(vector(my.x,my.y,my.z - 15 + my.z_offset),vector(my.x + 40,my.y,my.z - 15 + my.z_offset));
IF (result != 0 && you == null) {
wall_jump_direction = -1;
my.jumping_mode = 3;
my.animdist = 0;
space_press = 1;
my.force_z = 18;
my.animblend = 5;
str_cpy(player_blend_frame,"rightjump");
} ELSE {
trace_mode = ignore_me+ignore_push+ignore_passable+ignore_sprites;
result = trace(vector(my.x,my.y,my.z - 15 + my.z_offset),vector(my.x - 40,my.y,my.z - 15 + my.z_offset));
IF (result != 0 && you == null) {
wall_jump_direction = 1;
my.jumping_mode = 3;
my.animdist = 0;
space_press = 1;
my.force_z = 18;
my.animblend = 6;
str_cpy(player_blend_frame,"leftjump");
}
}
vec_set(temp,my.x);
temp.z -= 4000;
trace_mode = ignore_me+ignore_push+ignore_passable+ignore_sprites+use_box;
result = trace(vector(my.x,my.y,my.z + my.z_offset),temp);
player_ground_dist = result;
}

//////////////////////////////
// gravity
////////////////////////////
IF (result < 3 && my.jumping_mode != 1 && my.jumping_mode != 3) {
my.force_z = -1 * result;
IF (my.animblend == 8) {
my.animdist += 9 * time;
my.move_x = 0;
IF (my.animdist >= 100) {
my.animdist = 100;
ent_animate(my,"jump",my.animdist,0);
my.animblend = 0;
my.animdist = 0;
// my.animdist2 = 0;
// IF (key_cur == 0 && key_cul == 0) || (key_cur == 1 && key_cul == 1) {
// str_cpy(player_blend_frame,"stand");
// } ELSE {
// IF (key_shift == 1) { str_cpy(player_blend_frame,"walk"); } ELSE { str_cpy(player_blend_frame,"run"); }
// }
// str_cpy(player_blend_frame,"stand");
}
ent_animate(my,"jump",my.animdist,0);
str_cpy(player_frame,"jump");
}
IF (my.jumping_mode == 2 || my.jumping_mode == 4) && (my.animblend < 11) {
my.animblend = 3;
IF (my.jumping_mode == 4) {
my.animblend = 0;
str_cpy(player_blend_frame,"stand");
my.animdist2 = 0;
my.animdist = 0;
} ELSE {
IF (my.animdist > 80) { my.animdist2 = 0; }
IF (my.move_x == 0) {
str_cpy(player_blend_frame,"stand");
} ELSE {
IF (key_shift == 1) { str_cpy(player_blend_frame,"walk"); } ELSE { str_cpy(player_blend_frame,"run"); }
}
}
my.jumping_mode = 0;
}
} ELSE {
IF (my.jumping_mode == 0 && my.animblend != 3 && my.animblend != 7 && my.animblend != 8 && my.animblend < 11 && result > 50) {
my.animblend = 7;
my.animdist2 = 0;
str_cpy(player_blend_frame,"jump");
}
IF (my.force_z > -30) { my.force_z -= 3 * time; } ELSE { my.force_z = -30; }
IF (my.jumping_mode == 1 && my.force_z < 0) { my.jumping_mode = 2; }
IF (my.jumping_mode == 3 && my.force_z < 0) { my.jumping_mode = 4; }
}
my.velocity_z = 0.5 * my.force_z + max(1-0.5 * 0.7,0) * my.velocity_z;
my.move_z = my.velocity_z * time;
}

FUNCTION handle_animations() {
IF (my.animblend == 3) { //blend
IF (str_cmpi(player_frame,"forwardflip") == 1 || str_cmpi(player_frame,"leftjump") == 1 || str_cmpi(player_frame,"rightjump") == 1 || str_cmpi(player_frame,"jump") == 1 || str_cmpi(player_frame,"climb") == 1 || str_cmpi(player_frame,"rightattack_a") == 1 || str_cmpi(player_frame,"rightattack_b") == 1 || str_cmpi(player_frame,"forwardattack_a") == 1) {
ent_frame(player_frame,my.animdist);
} ELSE {
ent_cycle(player_frame,my.animdist);
}
ent_blend(player_blend_frame,0,my.animdist2);
my.animdist2 += 45 * time;
IF (my.animdist2 >= 100) {
my.animdist = 0;
IF (str_cmpi(player_blend_frame,"stand") == 1) { my.animblend = 0; }
IF (str_cmpi(player_blend_frame,"run") == 1) { my.animblend = 1; }
IF (str_cmpi(player_blend_frame,"walk") == 1) { my.animblend = 2; }
IF (str_cmpi(player_blend_frame,"forwardflip") == 1) { my.animblend = 4; }
IF (str_cmpi(player_blend_frame,"jump") == 1) { my.animblend = 7; }
IF (str_cmpi(player_blend_frame,"hang") == 1) { my.animblend = 9; }
IF (str_cmpi(player_blend_frame,"climb") == 1) { my.animblend = 10; }
}
}
IF (my.animblend == 0) { //stand
ent_animate(my,"stand",my.animdist,anm_cycle);
my.animdist += 1.5 * time;
my.animdist %= 100;
str_cpy(player_frame,"stand");
}
IF (my.animblend == 1) { //run
ent_animate(my,"run",my.animdist,anm_cycle);
my.animdist += 8 * time;
my.animdist %= 100;
str_cpy(player_frame,"run");
}
IF (my.animblend == 2) { //walk
ent_animate(my,"walk",my.animdist,anm_cycle);
my.animdist += 8.8 * time;
my.animdist %= 100;
str_cpy(player_frame,"walk");
}
IF (my.animblend == 4) { //forwardflip
ent_animate(my,"forwardflip",my.animdist,0);
my.animdist += 12 * time;
IF (my.animdist > 100) { my.animdist = 100; }
str_cpy(player_frame,"forwardflip");
}
IF (my.animblend == 5) { //rightjump
ent_animate(my,"rightjump",my.animdist,0);
my.animdist += 9 * time;
IF (my.animdist > 100) { my.animdist = 100; }
str_cpy(player_frame,"rightjump");
}
IF (my.animblend == 6) { //leftjump
ent_animate(my,"leftjump",my.animdist,0);
my.animdist += 9 * time;
IF (my.animdist > 100) { my.animdist = 100; }
str_cpy(player_frame,"leftjump");
}
IF (my.animblend == 7) { //fall blend
ent_cycle(player_frame,my.animdist);
ent_blend("jump",39,my.animdist2);
my.animdist2 += 45 * time;
IF (my.animdist2 >= 100) {
my.animdist = 39;
my.animblend = 8;
}
}
IF (my.animblend == 9) { //hang
ent_animate(my,"hang",my.animdist,anm_cycle);
my.animdist += 2 * time;
my.animdist %= 100;
str_cpy(player_frame,"hang");
}
IF (my.animblend == 10) { //climb
ent_animate(my,"climb",my.animdist,0);
str_cpy(player_frame,"climb");
}
IF (my.animblend == 11) { //rightattack a
ent_animate(my,"rightattack_a",my.animdist,0);
str_cpy(player_frame,"rightattack_a");
IF (my.animdist < 45) {
my.animdist += 42 * time;
} ELSE {
my.animdist += ((112 - my.animdist) / 4.8) * 1.5 * time;
}
IF (key_ctrl == 1 && ctrl_press == 0 && attack_state == 0) { attack_state = 1; }
IF (my.animdist >= 100) {
IF (attack_state == 1) {
ctrl_press = 1;
my.animblend = 12;
my.animdist = 0;
} ELSE {
my.animblend = 0;
my.animdist = 0;
}
}
}
IF (my.animblend == 12) { //rightattack b
ent_animate(my,"rightattack_b",my.animdist,0);
str_cpy(player_frame,"rightattack_b");
IF (my.animdist < 45) {
my.animdist += 58.5 * time;
} ELSE {
my.animdist += ((105 - my.animdist) / 2.2) * 1.5 * time;
}
IF (key_ctrl == 1 && ctrl_press == 0 && attack_state == 1) { attack_state = 2; }
IF (my.animdist >= 100) {
IF (attack_state == 2) {
ctrl_press = 1;
my.animblend = 13;
my.animdist = 0;
} ELSE {
my.animblend = 3;
my.animdist2 = 0;
str_cpy(player_blend_frame,"stand");
}
}
}
IF (my.animblend == 13) { //forwardattack a
ent_animate(my,"forwardattack_a",my.animdist,0);
str_cpy(player_frame,"forwardattack_a");
my.animdist += 18 * time;
IF (my.animdist >= 100) {
my.animblend = 0;
my.animdist = 0;
str_cpy(player_blend_frame,"stand");
str_cpy(player_frame,"stand");
}
}
}

FUNCTION handle_camera() {
IF (key_home == 1) {
cam_dist += 20 * time;
cam_dist = min(-200,cam_dist);
}
IF (key_end == 1) {
cam_dist -= 20 * time;
cam_dist = max(-600,cam_dist);
}
IF (key_bksp == 1) {
IF (cam_dist > -350) {
cam_dist -= 50 * time;
cam_dist = max(-350,cam_dist);
}
IF (cam_dist < -350) {
cam_dist += 50 * time;
cam_dist = min(-350,cam_dist);
}
}

camera.pan = 90;
camera.tilt = 0;
camera.x = my.x;
camera.y = cam_dist;
IF (player.z < 128) {
camera_move_to.z = 80;
} ELSE {
IF (my.force_z != 0) {
camera_move_to.z = my.z - 48;
} ELSE {
camera_move_to.z = my.z;
}
}
camera_force.z = (camera.z - camera_move_to.z) / -6;
camera_velocity.z = 0.5 * camera_force.z + max(1-0.5*0.7,0) * camera_velocity.z;
camera.z += camera_velocity.z * time;
}