diff --git a/SlimeDungeon.gmx/SlimeDungeon.project.gmx b/SlimeDungeon.gmx/SlimeDungeon.project.gmx index 275ceca..ba08535 100644 --- a/SlimeDungeon.gmx/SlimeDungeon.project.gmx +++ b/SlimeDungeon.gmx/SlimeDungeon.project.gmx @@ -223,6 +223,7 @@ + diff --git a/SlimeDungeon.gmx/objects/obj_damage.object.gmx b/SlimeDungeon.gmx/objects/obj_damage.object.gmx index 58ba0ea..55397d3 100644 --- a/SlimeDungeon.gmx/objects/obj_damage.object.gmx +++ b/SlimeDungeon.gmx/objects/obj_damage.object.gmx @@ -129,11 +129,11 @@ if (other.id != creator){ var dir = point_direction(x, y, other.x, other.y); } - var xforce = lengthdir_x(knockback, dir); - var yforce = lengthdir_y(knockback, dir); - with(other){ - physics_apply_impulse(x,y,xforce,yforce); - } + //var xforce = lengthdir_x(knockback, dir); + //var yforce = lengthdir_y(knockback, dir); + //with(other){ + //physics_apply_impulse(x,y,xforce,yforce); + //} } diff --git a/SlimeDungeon.gmx/objects/obj_dungeon_status.object.gmx b/SlimeDungeon.gmx/objects/obj_dungeon_status.object.gmx index b3ee85a..0eee7f1 100644 --- a/SlimeDungeon.gmx/objects/obj_dungeon_status.object.gmx +++ b/SlimeDungeon.gmx/objects/obj_dungeon_status.object.gmx @@ -102,6 +102,20 @@ dung_floor_size[1] = 100; //Stores the map of the current floor. +//help text +helpkeys[0] = "Dungeon Keys"; +helpkeys[1] = "Tab Key | Camera Toggle"; +helpkeys[2] = "B | Build Menu"; +helpkeys[3] = "Q | Status Menu"; +helpkeys[4] = "F2 | Debug Menu"; +helpkeys[5] = "Mouse Wheel | Zome Camera"; +helpkeys[6] = "Mouse Middle | Pan Camera"; +helpkeys[7] = ""; +helpkeys[8] = "Command Mode"; +helpkeys[9] = "Left Mouse | Select Select Unit"; +helpkeys[10] = "Right Mouse | Move Unit"; + + //setup tests! scr_init_skills(); scr_init_items(); @@ -280,19 +294,22 @@ if(obj_input.dungeonmenu_key){ if(obj_input.f2_key){ //scr_getcreatures(); -if(alarm[0] <= 0){ -//scr_roomobjects(); -//scr_getcreaturescount(); -//scr_getadventurercount(); -if(instance_exists(obj_admin)){ -if(obj_admin.bshow){ -obj_admin.bshow = false; -}else{ -obj_admin.bshow = true; -} -} -alarm[0] = room_speed / 6; + if(alarm[0] <= 0){ + if(instance_exists(obj_admin)){ + if(obj_admin.bshow){ + obj_admin.bshow = false; + }else{ + obj_admin.bshow = true; + } + } + alarm[0] = room_speed / 6; + } } + +if(obj_input.help_key){ + bhelpkey = true; +}else{ + bhelpkey = false; } @@ -366,18 +383,18 @@ scr_getadventurercount(); 1 /// @description Draw HUD -// You can write your code in this editor - //Fix when player death and presistent draw. -//show_debug_message(string(g_display_dungeon)); -if(global._display_dungeon){ - if(global._ishud){ +if(global._ishud){ + if(global._display_dungeon){ //script_execute(scr_dungeon_hud); script_execute(dungeon_ui); } } +if(bhelpkey){ + script_execute(scr_display_help_key); +} diff --git a/SlimeDungeon.gmx/objects/obj_lifeform_parent.object.gmx b/SlimeDungeon.gmx/objects/obj_lifeform_parent.object.gmx index 1ab3ae8..f26d903 100644 --- a/SlimeDungeon.gmx/objects/obj_lifeform_parent.object.gmx +++ b/SlimeDungeon.gmx/objects/obj_lifeform_parent.object.gmx @@ -29,8 +29,24 @@ if(object_get_physics(object_index)){ phy_fixed_rotation = true; } +//base info creature status hp = 3; maxhp = 3; +mp = 0; +maxmp = mp; + +level = 0; +experience = 0; +nextexperience = 10; +dpconvertrate = 10;//hp + mp / dpconvertrate = dp + +//battle settings +attack = 0; +defense = 0; +magicattack = 0; +magicdefense = 0; + + monsterTier = 1; name = "testName"; spd = 1; @@ -38,6 +54,13 @@ issnap = false; isfixed = false; objtype = VOID; +//paramse +name = "testname"; +bsingle_select = false; +teamid = -1; +owner = ""; +creator = ""; + //health bar bdisplay_healthbar = true; bdisplay_hungerbar = true; @@ -59,13 +82,7 @@ followTarget = instance_create(x,y,obj_follow_target); followTarget.owner = self; point = 0; path_done = 0; - -//paramse -name = "testname"; -bsingle_select = false; -teamid = -1; -owner = ""; -creator = ""; +path = path_add(); //loyalty loyalty = 50; @@ -122,6 +139,17 @@ mineStrength = 10; 1 /// delete stuff //death_loyalty(); +var dp = (maxhp + maxmp)/dpconvertrate; +show_debug_message("Dead dp:"+ string(dp)) + +//add dungeon poitns +obj_dungeon_status.dp += dp; + +//delete path +if(path_exists(path)){ + path_delete(path); +} + with(followTarget) { instance_destroy(); @@ -244,12 +272,13 @@ if ( hunger <= 0) { } if(hp <= 0){ - var corpse = instance_create(x,y,obj_corpse_parent); - corpse.food = maxHunger/2; - corpse.sprite_index = death_sprite; + //var corpse = instance_create(x,y,obj_corpse_parent); + //corpse.food = maxHunger/2; + //corpse.sprite_index = death_sprite; instance_destroy(); } -var corpse = collision_point(x,y,obj_corpse_parent,false,true); +//var corpse = collision_point(x,y,obj_corpse_parent,false,true); +/* if (corpse && alarm[11] <= 0) { var eatAmount = max(0,min(maxHunger-hunger,corpse.food,maxHunger/10)); @@ -258,8 +287,7 @@ if (corpse && alarm[11] <= 0) alarm[11] = 1*room_speed; loyalty += 5; } - - +*/ diff --git a/SlimeDungeon.gmx/objects/obj_monster_parent.object.gmx b/SlimeDungeon.gmx/objects/obj_monster_parent.object.gmx index 7a0f4ad..f5ebd90 100644 --- a/SlimeDungeon.gmx/objects/obj_monster_parent.object.gmx +++ b/SlimeDungeon.gmx/objects/obj_monster_parent.object.gmx @@ -56,6 +56,7 @@ script_state = noone; 1 /// @description Insert description here // You can write your code in this editor +event_inherited(); obj_dungeon_status.alarm[2] = room_speed; @@ -89,17 +90,22 @@ inst = instance_nearest(x, y, obj_adventurer_parent);//works //draw_line(x, y, 0, 0); if inst != id { - //draw_line(x, y, inst.x+8, inst.y+8); - if(distance_to_object(inst) < 10){ - script_state = scr_creature_attack; - }else{ - - } - //show_debug_message("Line?"); + if(distance_to_object(inst) < 32){ + script_state = scr_creature_move_to_target; + } + + //attack in range + //draw_line(x, y, inst.x+8, inst.y+8); + if(distance_to_object(inst) < 10){ + script_state = scr_creature_attack; + }else{ + + } + //show_debug_message("Line?"); } if(script_state != noone){ - script_execute(script_state); + script_execute(script_state); } diff --git a/SlimeDungeon.gmx/objects/obj_slime.object.gmx b/SlimeDungeon.gmx/objects/obj_slime.object.gmx index 5ec5a91..1eeb6bd 100644 --- a/SlimeDungeon.gmx/objects/obj_slime.object.gmx +++ b/SlimeDungeon.gmx/objects/obj_slime.object.gmx @@ -29,6 +29,18 @@ //phy_fixed_rotation = true; event_inherited(); +hp = 20; +maxhp = hp; +mp = 50; +maxmp = mp; + +//battle settings +attack = 5; +defense = 0; +magicattack = 0; +magicdefense = 0; + + hb_offset_x = -16; hb_offset_y = -16; hb_width = 32; diff --git a/SlimeDungeon.gmx/objects/obj_thief.object.gmx b/SlimeDungeon.gmx/objects/obj_thief.object.gmx index a5746cf..9599b5a 100644 --- a/SlimeDungeon.gmx/objects/obj_thief.object.gmx +++ b/SlimeDungeon.gmx/objects/obj_thief.object.gmx @@ -99,9 +99,9 @@ if inst != id - 0 + -1 0 - 0 + 1 0.5 0.100000001490116 0 @@ -110,5 +110,10 @@ if inst != id 0.200000002980232 -1 0 - + + 8,18 + 24,18 + 24,32 + 8,32 + diff --git a/SlimeDungeon.gmx/objects/obj_view.object.gmx b/SlimeDungeon.gmx/objects/obj_view.object.gmx index 6d10eb5..7e8ce20 100644 --- a/SlimeDungeon.gmx/objects/obj_view.object.gmx +++ b/SlimeDungeon.gmx/objects/obj_view.object.gmx @@ -110,8 +110,8 @@ if(bcameracontrol){ view_xview = drag_x - (mouse_x - view_xview); view_yview = drag_y - (mouse_y - view_yview[0]); //doesn't go outside view - view_xview = max(0,min(view_xview, room_width - view_wview)); - view_yview = max(0,min(view_yview, room_height - view_hview)); + //view_xview = max(0,min(view_xview, room_width - view_wview)); + //view_yview = max(0,min(view_yview, room_height - view_hview)); //change cursor window_set_cursor(cr_size_all); //show_debug_message("drag? "+string(drag_x)+":"+string(drag_y)); diff --git a/SlimeDungeon.gmx/scripts/scr_adventurer_attack.gml b/SlimeDungeon.gmx/scripts/scr_adventurer_attack.gml index 65c50bd..27db339 100644 --- a/SlimeDungeon.gmx/scripts/scr_adventurer_attack.gml +++ b/SlimeDungeon.gmx/scripts/scr_adventurer_attack.gml @@ -3,30 +3,30 @@ var inst,xx; inst = instance_nearest(x, y, obj_monster_parent);//works if inst != id { - var dir = point_direction(x,y,inst.x,inst.y); - var dirx = lengthdir_x(32,dir); - var diry = lengthdir_y(32,dir); - - if(alarm[10] <= 0){ - //show_debug_message("DIR:"+string(dir)); - //show_debug_message("HEALTH:"+string(hp)); - //show_debug_message("HEALTH EMENY:"+string(inst.hp)); - //show_debug_message(" POINT DIR:"+string(dirx) +":"+ string(diry)); - dirx = x + dirx; - diry = y + diry; - - //show_debug_message("DIR:"+string(dirx) +":"+ string(diry)); - - var damage = instance_create(dirx,diry, obj_damage); - //var damage = instance_create_layer(x,y,"effects", obj_damage); - //damage.sprite_index = //image draw - damage.creator = id; - //damage.damage = obj_player_stats.attack; - damage.damage = 5; - - //attacked = true; - alarm[10] = room_speed *2; - } + var dir = point_direction(x,y,inst.x,inst.y); + var dirx = lengthdir_x(32,dir); + var diry = lengthdir_y(32,dir); + + if(alarm[10] <= 0){ + //show_debug_message("DIR:"+string(dir)); + //show_debug_message("HEALTH:"+string(hp)); + //show_debug_message("HEALTH EMENY:"+string(inst.hp)); + //show_debug_message(" POINT DIR:"+string(dirx) +":"+ string(diry)); + dirx = x + dirx; + diry = y + diry; + + //show_debug_message("DIR:"+string(dirx) +":"+ string(diry)); + + var damage = instance_create(dirx,diry, obj_damage); + //var damage = instance_create_layer(x,y,"effects", obj_damage); + //damage.sprite_index = //image draw + damage.creator = id; + //damage.damage = obj_player_stats.attack; + damage.damage = attack; + + //attacked = true; + alarm[10] = room_speed *2; + } } diff --git a/SlimeDungeon.gmx/scripts/scr_creature_attack.gml b/SlimeDungeon.gmx/scripts/scr_creature_attack.gml index dfced7b..be2b83f 100644 --- a/SlimeDungeon.gmx/scripts/scr_creature_attack.gml +++ b/SlimeDungeon.gmx/scripts/scr_creature_attack.gml @@ -4,39 +4,38 @@ inst = instance_nearest(x, y, obj_adventurer_parent);//works if inst != id { - if(inst == noone){ - exit; - } - - if(inst.hp <= 0){ - exit; - } - var dir = point_direction(x,y,inst.x,inst.y); - var dirx = lengthdir_x(32,dir); - var diry = lengthdir_y(32,dir); - - if(alarm[10] <= 0){ - //show_debug_message("DIR:"+string(dir)); - //show_debug_message("HEALTH:"+string(hp)); - show_debug_message("HEALTH EMENY:"+string(inst.hp)); - - show_debug_message("Creature POINT DIR:"+string(dirx) +":"+ string(diry)); - - dirx = x + dirx; - diry = y + diry; - - //show_debug_message("DIR:"+string(dirx) +":"+ string(diry)); - - var damage = instance_create(dirx,diry, obj_damage); - //var damage = instance_create_layer(x,y,"effects", obj_damage); - //damage.sprite_index = //image draw - damage.creator = id; - //damage.damage = obj_player_stats.attack; - damage.damage = 5; - - //attacked = true; - alarm[10] = room_speed *2; - } + if(inst == noone){ + exit; + } + + if(inst.hp <= 0){ + exit; + } + var dir = point_direction(x,y,inst.x,inst.y); + var dirx = lengthdir_x(32,dir); + var diry = lengthdir_y(32,dir); + + if(alarm[10] <= 0){ + //show_debug_message("DIR:"+string(dir)); + //show_debug_message("HEALTH:"+string(hp)); + show_debug_message("HEALTH EMENY:"+string(inst.hp)); + show_debug_message("Creature POINT DIR:"+string(dirx) +":"+ string(diry)); + + dirx = x + dirx; + diry = y + diry; + + //show_debug_message("DIR:"+string(dirx) +":"+ string(diry)); + + var damage = instance_create(dirx,diry, obj_damage); + //var damage = instance_create_layer(x,y,"effects", obj_damage); + //damage.sprite_index = //image draw + damage.creator = id; + //damage.damage = obj_player_stats.attack; + damage.damage = attack; + + //attacked = true; + alarm[10] = room_speed *1; + } } diff --git a/SlimeDungeon.gmx/scripts/scr_creature_move_to_target.gml b/SlimeDungeon.gmx/scripts/scr_creature_move_to_target.gml new file mode 100644 index 0000000..3a15e56 --- /dev/null +++ b/SlimeDungeon.gmx/scripts/scr_creature_move_to_target.gml @@ -0,0 +1,28 @@ +var inst,xx; + +inst = instance_nearest(x, y, obj_adventurer_parent);//works + +if inst != id +{ + if(inst == noone){ + exit; + } + + if(inst.hp <= 0){ + exit; + } + + //var dir = point_direction(x,y,inst.x,inst.y); + //var dirx = lengthdir_x(3,dir); + //var diry = lengthdir_y(3,dir); + + if(object_get_physics(object_index) ){ + var facedir = point_direction(x,y,inst.x,inst.y); + var dirx = lengthdir_x(3,facedir); + var diry = lengthdir_y(3,facedir); + phy_position_x +=dirx; + phy_position_y +=diry; + }else{ + mp_potential_step(inst.x,inst.y,3,false); + } +}