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);
+ }
+}