Skip to content

Commit

Permalink
rework firemission error messages
Browse files Browse the repository at this point in the history
  • Loading branch information
mullenpaul committed Dec 21, 2023
1 parent 100f736 commit dec1a84
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 20 deletions.
1 change: 1 addition & 0 deletions code/__DEFINES/__game.dm
Original file line number Diff line number Diff line change
Expand Up @@ -391,6 +391,7 @@ block( \
#define FIRE_MISSION_WEAPON_REMOVED 8
#define FIRE_MISSION_WEAPON_UNUSABLE 16
#define FIRE_MISSION_WEAPON_OUT_OF_AMMO 32
#define FIRE_MISSION_BAD_DIRECTION 64
#define FIRE_MISSION_NOT_EXECUTABLE -1

//Defines for firemission state
Expand Down
36 changes: 18 additions & 18 deletions code/game/cas_manager/datums/cas_fire_envelope.dm
Original file line number Diff line number Diff line change
Expand Up @@ -67,61 +67,61 @@
mission_error = null
if(stat > FIRE_MISSION_STATE_IN_TRANSIT && stat < FIRE_MISSION_STATE_COOLDOWN)
mission_error = "Fire Mission is under way already."
return 0
return FIRE_MISSION_NOT_EXECUTABLE
if(!missions[mission_id])
return -1
return FIRE_MISSION_NOT_EXECUTABLE
var/datum/cas_fire_mission/mission = missions[mission_id]
if(!mission)
return -1
return FIRE_MISSION_NOT_EXECUTABLE

var/datum/cas_fire_mission_record/fmr = mission.record_for_weapon(weapon_id)
if(!fmr)
return -1
return FIRE_MISSION_NOT_EXECUTABLE
if(!fmr.offsets || isnull(fmr.offsets[offset_step]))
return -1
return FIRE_MISSION_NOT_EXECUTABLE
var/old_offset = fmr.offsets[offset_step]
if(offset == null)
offset = "-"
fmr.offsets[offset_step] = offset
var/check_result = mission.check(linked_console)
if(check_result == FIRE_MISSION_CODE_ERROR)
return -1
return FIRE_MISSION_NOT_EXECUTABLE
if(check_result == FIRE_MISSION_ALL_GOOD)
return 1
return FIRE_MISSION_ALL_GOOD
if(check_result == FIRE_MISSION_WEAPON_OUT_OF_AMMO)
return 1
return FIRE_MISSION_ALL_GOOD

mission_error = mission.error_message(check_result)
if(skip_checks)
return 0
return FIRE_MISSION_ALL_GOOD

//we have mission error. Fill the thing and restore previous state
fmr.offsets[offset_step] = old_offset

return 0
return FIRE_MISSION_ALL_GOOD

/datum/cas_fire_envelope/proc/execute_firemission(datum/cas_signal/signal, target_turf,dir, mission_id)
if(stat != FIRE_MISSION_STATE_IDLE)
mission_error = "Fire Mission is under way already."
return 0
return FIRE_MISSION_NOT_EXECUTABLE
if(!missions[mission_id])
return -1
return FIRE_MISSION_NOT_EXECUTABLE
if(dir!=NORTH && dir!=SOUTH && dir!=WEST && dir!=EAST)
mission_error = "Incorrect direction."
return 0
return FIRE_MISSION_BAD_DIRECTION
mission_error = null
var/datum/cas_fire_mission/mission = missions[mission_id]
var/check_result = mission.check(linked_console)
if(check_result == FIRE_MISSION_CODE_ERROR)
return -1
return FIRE_MISSION_CODE_ERROR

if(check_result != FIRE_MISSION_ALL_GOOD)
mission_error = mission.error_message(check_result)
return 0
return FIRE_MISSION_CODE_ERROR

//actual firemission code
execute_firemission_unsafe(signal, target_turf, dir, mission)
return 1
return FIRE_MISSION_ALL_GOOD

/datum/cas_fire_envelope/proc/firemission_status_message()
switch(stat)
Expand Down Expand Up @@ -321,13 +321,13 @@

/obj/structure/machinery/computer/dropship_weapons/proc/update_mission(mission_id, weapon_id, offset_step, offset)
var/result = firemission_envelope.update_mission(mission_id, weapon_id, offset_step, offset)
if(result<1)
if(result != FIRE_MISSION_ALL_GOOD)
return firemission_envelope.mission_error
return "OK"

// Used in the simulation room for firemission testing.
/obj/structure/machinery/computer/dropship_weapons/proc/execute_firemission(obj/location, offset, dir, mission_id)
var/result = firemission_envelope.execute_firemission(get_turf(location), offset, dir, mission_id)
if(result<1)
if(result != FIRE_MISSION_ALL_GOOD)
return firemission_envelope.mission_error
return "OK"
4 changes: 2 additions & 2 deletions code/game/machinery/computer/dropship_weapons.dm
Original file line number Diff line number Diff line change
Expand Up @@ -701,7 +701,7 @@
return FALSE

var/result = firemission_envelope.update_mission(fm_tag, weapon_id, offset_id, offset_value)
if(result != null && result != 0)
if(result != FIRE_MISSION_ALL_GOOD)
playsound(src, 'sound/machines/terminal_error.ogg', 5, 1)
return TRUE

Expand Down Expand Up @@ -750,7 +750,7 @@
source.z
)
var/result = firemission_envelope.execute_firemission(recorded_loc, target, dir, fmId)
if(result < 1)
if(result != FIRE_MISSION_ALL_GOOD)
to_chat(user, SPAN_WARNING("Screen beeps with an error: [firemission_envelope.mission_error]"))
return TRUE

Expand Down

0 comments on commit dec1a84

Please sign in to comment.