Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: Refactor obj_bomb alarm 1 array length bug #498

Merged
merged 3 commits into from
Feb 22, 2025
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
88 changes: 35 additions & 53 deletions objects/obj_bomb_select/Alarm_1.gml
Original file line number Diff line number Diff line change
@@ -1,43 +1,24 @@
// Sets which target is in planet and its strenght
for(var i=0; i<31; i++){
ship[i]="";
ship_all[i]=0;
ship_use[i]=0;
ship_max[i]=0;
ship_ide[i]=-1;
}

max_ships=sh_target.capital_number+sh_target.frigate_number+sh_target.escort_number;
ship=[];
ship_all=[];
ship_use=[];
ship_max=[];
ship_ide=[];

var tump=0;
var _ships = fleet_full_ship_array(sh_target);
max_ships = array_length(_ships);
bomb_a = calculate_fleet_bombard_score(_ships);
var _total_fleet_loaded = calculate_fleet_content_size(_ships);
bomb_b = _total_fleet_loaded;
bomb_c = _total_fleet_loaded;

var i=-1;
for(var b=0; b<array_length(sh_target.capital); b++){
if (sh_target.capital[b]!=""){
i+=1;
ship[i]=sh_target.capital[i];

ship_use[i]=0;
tump=sh_target.capital_num[i];
ship_max[i]=obj_ini.ship_carrying[tump];
ship_ide[i]=tump;

bomb_a+=3;
bomb_b+=ship_max[i];bomb_c+=ship_max[i];
}
}
for(var q=0; q<array_length(sh_target.frigate); q++){
if (sh_target.frigate[q]!=""){
i+=1;
ship[i]=sh_target.frigate[q];

ship_use[i]=0;
tump=sh_target.frigate_num[q];
ship_max[i]=obj_ini.ship_carrying[tump];
ship_ide[i]=tump;

bomb_a+=1;
bomb_b+=ship_max[i];bomb_c+=ship_max[i];
for (var i=0;i<array_length(_ships);i++){
if (ship_bombard_score(_ships[i]) > 0){
array_push(ship_ide, _ships[i]);
array_push(ship_max, obj_ini.ship_carrying[_ships[i]]);
array_push(ship, obj_ini.ship[_ships[i]]);
array_push(ship_use, 0);
array_push(ship_all, 0);
}
}

Expand All @@ -52,23 +33,24 @@ traitors=p_target.p_traitors[obj_controller.selecting_planet];
necrons=p_target.p_necrons[obj_controller.selecting_planet];

var onceh=0;
imp=p_target.p_guardsmen[obj_controller.selecting_planet];
if (onceh == 0) {
if (imp >= 50000000) {
imp = 6;
} else if (imp >= 15000000) {
imp = 5;
} else if (imp >= 6000000) {
imp = 4;
} else if (imp >= 1000000) {
imp = 3;
} else if (imp >= 100000) {
imp = 2;
} else if (imp >= 2000) {
imp = 1;
}
onceh = 1;
if (p_data.guardsmen>0){
imp=p_data.guard_score_calc();
}
var _pdf_count=p_data.pdf;
if (pdf >= 50000000) {
pdf = 6;
} else if (_pdf_count >= 15000000) {
pdf = 5;
} else if (_pdf_count >= 6000000) {
pdf = 4;
} else if (_pdf_count >= 1000000) {
pdf = 3;
} else if (_pdf_count >= 100000) {
pdf = 2;
} else if (_pdf_count >= 2000) {
pdf = 1;
}


onceh=0;
pdf=p_target.p_pdf[obj_controller.selecting_planet];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -599,7 +599,26 @@ function get_nearest_player_fleet(nearest_x, nearest_y, is_static=false, is_movi
return chosen_fleet;
}

function calculate_fleet_content_size(ship_array){
var total_content = 0;
for (var i=0;i<array_length(ship_array);i++){
var _ship_id = ship_array[i];
if (_ship_id<array_length(obj_ini.ship)){
total_content += obj_ini.ship_carrying[_ship_id];
}
}
return total_content;
}



function calculate_fleet_bombard_score(ship_array){
var bomb_score = 0;
for (var i=0;i<array_length(ship_array);i++){
var _ship_id = ship_array[i];
if (_ship_id<array_length(obj_ini.ship)){
bomb_score += ship_bombard_score(_ship_id);
}
}
return bomb_score;
}

32 changes: 31 additions & 1 deletion scripts/scr_player_ship_functions/scr_player_ship_functions.gml
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@ function new_player_ship(type, start_loc="home", new_name=""){
obj_ini.ship_wep[index,4]="Torpedo Tubes";
obj_ini.ship_wep_facing[index,4]="front";
obj_ini.ship_wep_condition[index,4]="";
obj_ini.ship_wep[index,5]="Bombardment Cannons";
obj_ini.ship_wep[index,5]="Macro Bombardment Cannons";
obj_ini.ship_wep_facing[index,5]="most";
obj_ini.ship_wep_condition[index,5]="";
obj_ini.ship_capacity[index]=600;
Expand Down Expand Up @@ -389,6 +389,9 @@ function new_player_ship(type, start_loc="home", new_name=""){
obj_ini.ship_wep_condition[index,3]="";
obj_ini.ship_wep[index,4]="Plasma Cannon";
ship_wep_facing[index,4]="front";
obj_ini.ship_wep[index,5]="Macro Bombardment Cannons";
obj_ini.ship_wep_facing[index,4]="most";
obj_ini.ship_wep_condition[index,4]="";
obj_ini.ship_wep_condition[index,4]="";
obj_ini.ship_capacity[index]=800;
obj_ini.ship_carrying[index]=0;
Expand All @@ -403,6 +406,7 @@ function ship_class_name(index){
var _ship_class = obj_ini.ship_class[index];
return $"{_ship_class} '{_ship_name}'";
}

function player_ships_class(index){
var _escorts = ["Escort", "Hunter", "Gladius"];
var _capitals = ["Gloriana", "Battle Barge", "Capital"];
Expand All @@ -417,3 +421,29 @@ function player_ships_class(index){
}
return _ship_name_class;
}

function ship_bombard_score(ship_id){
var _bomb_score = 0;
static weapon_bomb_scores = {
"Bombardment Cannons" : {
value : 1,
},
"Macro Bombardment Cannons" : {
value : 2,
},
"Plasma Cannon" : {
value : 4
},
"Torpedo Tubes" : {
value : 1
}
}
for (var b=0;b<array_length(obj_ini.ship_wep[ship_id]);b++){
var _wep = obj_ini.ship_wep[ship_id][b];
if (struct_exists(weapon_bomb_scores, _wep)){
_bomb_score += weapon_bomb_scores[$ _wep].value;
}
}

return _bomb_score;
}