From cec5390c99307f51c36829e117fac4a4c387fe2f Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Sun, 15 Nov 2015 15:24:51 -0500 Subject: [PATCH 01/10] Nations 2.0 initial commit --- code/__DEFINES/hud.dm | 1 + code/__HELPERS/global_lists.dm | 5 + code/_globalvars/lists/mobs.dm | 1 + code/datums/mind.dm | 1 + code/game/gamemodes/nations/flagobjs.dm | 53 ++++++ code/game/gamemodes/nations/nations.dm | 164 ++++++++++++++++++ code/modules/mob/dead/observer/observer.dm | 2 + code/modules/mob/living/carbon/human/human.dm | 5 +- code/modules/mob/living/carbon/human/life.dm | 31 ++++ code/modules/mob/living/silicon/ai/ai.dm | 1 + .../modules/mob/living/silicon/robot/robot.dm | 1 + paradise.dme | 2 + 12 files changed, 265 insertions(+), 2 deletions(-) create mode 100644 code/game/gamemodes/nations/flagobjs.dm create mode 100644 code/game/gamemodes/nations/nations.dm diff --git a/code/__DEFINES/hud.dm b/code/__DEFINES/hud.dm index 293ba1f18ea..3e3e219792b 100644 --- a/code/__DEFINES/hud.dm +++ b/code/__DEFINES/hud.dm @@ -8,3 +8,4 @@ #define IMPTRACK_HUD 7 // tracking implant #define SPECIALROLE_HUD 8 // AntagHUD image #define STATUS_HUD_OOC 9 // STATUS_HUD without virus db check for someone being ill. +#define NATIONS_HUD 10 //Show nations icons during nations gamemode diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index 00faf1864f9..5c5bbd3d731 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -36,6 +36,11 @@ var/datum/superheroes/S = new T all_superheroes[S.name] = S + paths = subtypesof(/datum/nations) + for(var/T in paths) + var/datum/nations/N = new T + all_nations[N.name] = N + //Languages and species. paths = subtypesof(/datum/language) for(var/T in paths) diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm index c13ae732cee..2b7068e1231 100644 --- a/code/_globalvars/lists/mobs.dm +++ b/code/_globalvars/lists/mobs.dm @@ -3,6 +3,7 @@ var/global/list/all_species[0] var/global/list/all_languages[0] var/global/list/language_keys[0] // Table of say codes for all languages var/global/list/all_superheroes[0] +var/global/list/all_nations[0] var/global/list/whitelisted_species = list() var/list/clients = list() //list of all clients diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 0efec301d83..0ac395baf02 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -56,6 +56,7 @@ var/datum/faction/faction //associated faction var/datum/changeling/changeling //changeling holder var/datum/vampire/vampire //vampire holder + var/datum/nations/nation //nation holder var/rev_cooldown = 0 diff --git a/code/game/gamemodes/nations/flagobjs.dm b/code/game/gamemodes/nations/flagobjs.dm new file mode 100644 index 00000000000..7cb5b27c6cb --- /dev/null +++ b/code/game/gamemodes/nations/flagobjs.dm @@ -0,0 +1,53 @@ +//Nations/Department flags --Nations Gamemode Specific +/obj/item/flag/nation/cargo + name = "Cargonia flag" + desc = "The flag of the independent, sovereign nation of Cargonia." + icon_state = "cargoflag" + +/obj/item/flag/nation/med + name = "Medistan flag" + desc = "The flag of the independent, sovereign nation of Medistan." + icon_state = "medflag" + +/obj/item/flag/nation/sec + name = "Brigston flag" + desc = "The flag of the independent, sovereign nation of Brigston." + icon_state = "secflag" + +/obj/item/flag/nation/rnd + name = "Scientopia flag" + desc = "The flag of the independent, sovereign nation of Scientopia." + icon_state = "rndflag" + +/obj/item/flag/nation/atmos + name = "Atmosia flag" + desc = "The flag of the independent, sovereign nation of Atmosia." + icon_state = "atmosflag" + +/obj/item/flag/nation/command + name = "People's Republic of Commandzakstan flag" + desc = "The flag of the independent, sovereign nation of the People's Republic of Commandzakstan." + icon_state = "ntflag" + + + +/datum/nations + var/name + +/datum/nations/atmosia + name = "Atmosia" + +/datum/nations/brigston + name = "Brigston" + +/datum/nations/cargonia + name = "Cargonia" + +/datum/nations/command + name = "People's Republic of Commandzakstan" + +/datum/nations/medistan + name = "Medistan" + +/datum/nations/scientopia + name = "Scientopia" diff --git a/code/game/gamemodes/nations/nations.dm b/code/game/gamemodes/nations/nations.dm new file mode 100644 index 00000000000..cd7ee261420 --- /dev/null +++ b/code/game/gamemodes/nations/nations.dm @@ -0,0 +1,164 @@ +datum/game_mode/nations + name = "nations" + config_tag = "nations" + required_players_secret = 25 + var/const/waittime_l = 1200 //lower bound on time before intercept arrives (in tenths of seconds) + var/const/waittime_h = 3000 //upper bound on time before intercept arrives (in tenths of seconds) + var/kickoff = 0 + var/victory = 0 + var/list/cargonians = list("Quartermaster","Cargo Technician","Shaft Miner") + + +/datum/game_mode/nations/post_setup() + spawn (rand(waittime_l, waittime_h)) + spawn(50) + kickoff=1 + send_intercept() + split_teams() + for(var/mob/M in player_list) + if(!istype(M,/mob/new_player)) + M << sound('sound/effects/purge_siren.ogg') + return ..() + +/datum/game_mode/nations/send_intercept() + command_announcement.Announce("Due to recent and COMPLETELY UNFOUNDED allegations of massive fraud and insider trading \ + affecting trillions of investors, the Nanotrasen Corporation has decided to liquidate all \ + assets of the Centcom Division in order to pay the massive legal fees that will be incurred \ + during the following centuries long court process. Therefore, all current employment contracts \ + are IMMEDIATELY TERMINATED. Nanotrasen will be unable to send a rescue shuttle to carry you home,\ + however they remain willing for the time being to continue trading cargo. Have a pleasant \ + day.", "FINAL TRANSMISSION, CENTCOM.", new_sound = 'sound/AI/intercept.ogg') + + +/datum/game_mode/nations/proc/split_teams() + + for(var/mob/living/carbon/human/H in player_list) + if(H.mind) + if(H.mind.assigned_role in engineering_positions) + H.mind.nation = all_nations["Atmosia"] + H.hud_updateflag |= 1 << NATIONS_HUD + var/I = image('icons/mob/hud.dmi', loc = H.mind.current, icon_state = "hudatmosia") + H.client.images += I + H << "You are now part of the great sovereign nation of [H.mind.nation.name]!" + continue + else if(H.mind.assigned_role in medical_positions) + H.mind.nation = all_nations["Medistan"] + H.hud_updateflag |= 1 << NATIONS_HUD + var/I = image('icons/mob/hud.dmi', loc = H.mind.current, icon_state = "hudmedistan") + H.client.images += I + H << "You are now part of the great sovereign nation of [H.mind.nation.name]!" + continue + else if(H.mind.assigned_role in science_positions) + H.mind.nation = all_nations["Scientopia"] + H.hud_updateflag |= 1 << NATIONS_HUD + var/I = image('icons/mob/hud.dmi', loc = H.mind.current, icon_state = "hudscientopia") + H.client.images += I + H << "You are now part of the great sovereign nation of [H.mind.nation.name]!" + continue + else if(H.mind.assigned_role in security_positions) + H.mind.nation = all_nations["Brigston"] + H.hud_updateflag |= 1 << NATIONS_HUD + var/I = image('icons/mob/hud.dmi', loc = H.mind.current, icon_state = "hudbrigston") + H.client.images += I + H << "You are now part of the great sovereign nation of [H.mind.nation.name]!" + continue + else if(H.mind.assigned_role in cargonians) + H.mind.nation = all_nations["Cargonia"] + H.hud_updateflag |= 1 << NATIONS_HUD + var/I = image('icons/mob/hud.dmi', loc = H.mind.current, icon_state = "hudcargonia") + H.client.images += I + H << "You are now part of the great sovereign nation of [H.mind.nation.name]!" + continue + else if(H.mind.assigned_role in support_positions) + H.mind.nation = all_nations["People's Republic of Commandzakstan"] + H.hud_updateflag |= 1 << NATIONS_HUD + var/I = image('icons/mob/hud.dmi', loc = H.mind.current, icon_state = "hudcommand") + H.client.images += I + H << "You are now part of the great sovereign nation of [H.mind.nation.name]!" + continue + else if(H.mind.assigned_role in command_positions) + H.mind.nation = all_nations["People's Republic of Commandzakstan"] + H.hud_updateflag |= 1 << NATIONS_HUD + var/I = image('icons/mob/hud.dmi', loc = H.mind.current, icon_state = "hudcommand") + H.client.images += I + H << "You are now part of the great sovereign nation of [H.mind.nation.name]!" + continue + else + message_admins("[H.name] with [H.mind.assigned_role] could not find any nation to assign!") + continue + + + +/** + * LateSpawn hook. + * Called in newplayer.dm when a humanoid character joins the round after it started. + * Parameters: var/mob/living/carbon/human, var/rank + */ +/hook/latespawn/proc/give_latejoiners_nations(var/mob/living/carbon/human/H) + var/datum/game_mode/nations/mode = get_nations_mode() + if (!mode) return 1 + + if(!mode.kickoff) return 1 + + var/list/cargonians = list("Quartermaster","Cargo Technician","Shaft Miner") + if(H.mind) + if(H.mind.assigned_role in engineering_positions) + H.mind.nation = all_nations["Atmosia"] + H.hud_updateflag |= 1 << NATIONS_HUD + var/I = image('icons/mob/hud.dmi', loc = H.mind.current, icon_state = "hudatmosia") + H.client.images += I + H << "You are now part of the great sovereign nation of [H.mind.nation.name]!" + return 1 + else if(H.mind.assigned_role in medical_positions) + H.mind.nation = all_nations["Medistan"] + H.hud_updateflag |= 1 << NATIONS_HUD + var/I = image('icons/mob/hud.dmi', loc = H.mind.current, icon_state = "hudmedistan") + H.client.images += I + H << "You are now part of the great sovereign nation of [H.mind.nation.name]!" + return 1 + else if(H.mind.assigned_role in science_positions) + H.mind.nation = all_nations["Scientopia"] + H.hud_updateflag |= 1 << NATIONS_HUD + var/I = image('icons/mob/hud.dmi', loc = H.mind.current, icon_state = "hudscientopia") + H.client.images += I + H << "You are now part of the great sovereign nation of [H.mind.nation.name]!" + return 1 + else if(H.mind.assigned_role in security_positions) + H.mind.nation = all_nations["Brigston"] + H.hud_updateflag |= 1 << NATIONS_HUD + var/I = image('icons/mob/hud.dmi', loc = H.mind.current, icon_state = "hudbrigston") + H.client.images += I + H << "You are now part of the great sovereign nation of [H.mind.nation.name]!" + return 1 + else if(H.mind.assigned_role in cargonians) + H.mind.nation = all_nations["Cargonia"] + H.hud_updateflag |= 1 << NATIONS_HUD + var/I = image('icons/mob/hud.dmi', loc = H.mind.current, icon_state = "hudcargonia") + H.client.images += I + H << "You are now part of the great sovereign nation of [H.mind.nation.name]!" + return 1 + else if(H.mind.assigned_role in support_positions) + H.mind.nation = all_nations["People's Republic of Commandzakstan"] + H.hud_updateflag |= 1 << NATIONS_HUD + var/I = image('icons/mob/hud.dmi', loc = H.mind.current, icon_state = "hudcommand") + H.client.images += I + H << "You are now part of the great sovereign nation of [H.mind.nation.name]!" + return 1 + else if(H.mind.assigned_role in command_positions) + H.mind.nation = all_nations["People's Republic of Commandzakstan"] + H.hud_updateflag |= 1 << NATIONS_HUD + var/I = image('icons/mob/hud.dmi', loc = H.mind.current, icon_state = "hudcommand") + H.client.images += I + H << "You are now part of the great sovereign nation of [H.mind.nation.name]!" + return 1 + else + message_admins("[H.name] with [H.mind.assigned_role] could not find any nation to assign!") + return 1 + message_admins("[H.name] latejoined with no mind.") + return 1 + +/proc/get_nations_mode() + if(!ticker || !istype(ticker.mode, /datum/game_mode/nations)) + return null + + return ticker.mode \ No newline at end of file diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index ed5441c06f1..a5abf9ce4b9 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -146,8 +146,10 @@ Works together with spawning an observer, noted above. var/client/C = U.client for(var/mob/living/carbon/human/target in target_list) C.images += target.hud_list[SPECIALROLE_HUD] + C.images += target.hud_list[NATIONS_HUD] for(var/mob/living/silicon/target in target_list) C.images += target.hud_list[SPECIALROLE_HUD] + C.images += target.hud_list[NATIONS_HUD] return 1 diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index b165da55da5..3de3e569e8c 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -37,6 +37,7 @@ hud_list[IMPTRACK_HUD] = image('icons/mob/hud.dmi', src, "hudblank") hud_list[SPECIALROLE_HUD] = image('icons/mob/hud.dmi', src, "hudblank") hud_list[STATUS_HUD_OOC] = image('icons/mob/hud.dmi', src, "hudhealthy") + hud_list[NATIONS_HUD] = image('icons/mob/hud.dmi', src, "hudblank") ..() @@ -1838,9 +1839,9 @@ /mob/living/carbon/human/proc/get_full_print() if(!dna || !dna.uni_identity) return - return md5(dna.uni_identity) + return md5(dna.uni_identity) /mob/living/carbon/human/can_see_reagents() for(var/obj/item/clothing/C in src) //If they have some clothing equipped that lets them see reagents, they can see reagents if(C.scan_reagents) - return 1 + return 1 diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 03cde195fe4..2aa3d1e99d7 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1033,6 +1033,10 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc if(hud_updateflag) handle_hud_list() + if(ticker && ticker.mode.name == "nations") + process_nations() + + /mob/living/carbon/human/handle_random_events() // Puke if toxloss is too high @@ -1446,6 +1450,28 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc holder.icon_state = "hudshadowlingthrall" hud_list[SPECIALROLE_HUD] = holder + + if(hud_updateflag & 1 << NATIONS_HUD) + var/image/holder = hud_list[NATIONS_HUD] + holder.icon_state = "hudblank" + + if(mind && mind.nation) + switch(mind.nation.name) + if("Atmosia") + holder.icon_state = "hudatmosia" + if("Brigston") + holder.icon_state = "hudbrigston" + if("Cargonia") + holder.icon_state = "hudcargonia" + if("People's Republic of Commandzakstan") + holder.icon_state = "hudcommand" + if("Medistan") + holder.icon_state = "hudmedistan" + if("Scientopia") + holder.icon_state = "hudscientopia" + + hud_list[NATIONS_HUD] = holder + hud_updateflag = 0 /mob/living/carbon/human/handle_silent() @@ -1480,6 +1506,11 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc return +/mob/living/carbon/human/proc/process_nations() + var/client/C = client + for(var/mob/living/carbon/human/H in view(src, 14)) + C.images += H.hud_list[NATIONS_HUD] + // Need this in species. //#undef HUMAN_MAX_OXYLOSS //#undef HUMAN_CRIT_MAX_OXYLOSS diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 3dd855994ae..c9aafbe2804 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -183,6 +183,7 @@ var/list/ai_verbs_default = list( hud_list[IMPCHEM_HUD] = image('icons/mob/hud.dmi', src, "hudblank") hud_list[IMPTRACK_HUD] = image('icons/mob/hud.dmi', src, "hudblank") hud_list[SPECIALROLE_HUD] = image('icons/mob/hud.dmi', src, "hudblank") + hud_list[NATIONS_HUD] = image('icons/mob/hud.dmi', src, "hudblank") ai_list += src ..() diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 579bcec93d4..5c02b6aeb69 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -149,6 +149,7 @@ var/list/robot_verbs_default = list( hud_list[IMPCHEM_HUD] = image('icons/mob/hud.dmi', src, "hudblank") hud_list[IMPTRACK_HUD] = image('icons/mob/hud.dmi', src, "hudblank") hud_list[SPECIALROLE_HUD] = image('icons/mob/hud.dmi', src, "hudblank") + hud_list[NATIONS_HUD] = image('icons/mob/hud.dmi', src, "hudblank") scanner.Grant(src) /mob/living/silicon/robot/proc/init(var/alien=0) diff --git a/paradise.dme b/paradise.dme index cd1654c9d64..bf27a2ad417 100644 --- a/paradise.dme +++ b/paradise.dme @@ -352,6 +352,8 @@ #include "code\game\gamemodes\mutiny\directives\tau_ceti_needs_women_directive.dm" #include "code\game\gamemodes\mutiny\directives\terminations_directive.dm" #include "code\game\gamemodes\mutiny\directives\vox_heist.dm" +#include "code\game\gamemodes\nations\flagobjs.dm" +#include "code\game\gamemodes\nations\nations.dm" #include "code\game\gamemodes\nuclear\nuclear.dm" #include "code\game\gamemodes\nuclear\nuclearbomb.dm" #include "code\game\gamemodes\nuclear\pinpointer.dm" From 3acdaccfd34992cc47d484085b6b465d7cac0723 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Mon, 16 Nov 2015 11:26:21 -0500 Subject: [PATCH 02/10] Cleaned up code following Tiger's recommendations --- code/__DEFINES/hud.dm | 2 +- code/game/gamemodes/nations/nations.dm | 51 ++++++++++++-------- code/modules/mob/living/carbon/human/life.dm | 2 +- 3 files changed, 34 insertions(+), 21 deletions(-) diff --git a/code/__DEFINES/hud.dm b/code/__DEFINES/hud.dm index 3e3e219792b..fc591df9c14 100644 --- a/code/__DEFINES/hud.dm +++ b/code/__DEFINES/hud.dm @@ -8,4 +8,4 @@ #define IMPTRACK_HUD 7 // tracking implant #define SPECIALROLE_HUD 8 // AntagHUD image #define STATUS_HUD_OOC 9 // STATUS_HUD without virus db check for someone being ill. -#define NATIONS_HUD 10 //Show nations icons during nations gamemode +#define NATIONS_HUD 10 //Show nations icons during nations gamemode diff --git a/code/game/gamemodes/nations/nations.dm b/code/game/gamemodes/nations/nations.dm index cd7ee261420..b716c93b1c9 100644 --- a/code/game/gamemodes/nations/nations.dm +++ b/code/game/gamemodes/nations/nations.dm @@ -11,13 +11,12 @@ datum/game_mode/nations /datum/game_mode/nations/post_setup() spawn (rand(waittime_l, waittime_h)) - spawn(50) - kickoff=1 - send_intercept() - split_teams() - for(var/mob/M in player_list) - if(!istype(M,/mob/new_player)) - M << sound('sound/effects/purge_siren.ogg') + kickoff=1 + send_intercept() + split_teams() + for(var/mob/M in player_list) + if(!istype(M,/mob/new_player)) + M << sound('sound/effects/purge_siren.ogg') return ..() /datum/game_mode/nations/send_intercept() @@ -41,48 +40,55 @@ datum/game_mode/nations H.client.images += I H << "You are now part of the great sovereign nation of [H.mind.nation.name]!" continue - else if(H.mind.assigned_role in medical_positions) + + if(H.mind.assigned_role in medical_positions) H.mind.nation = all_nations["Medistan"] H.hud_updateflag |= 1 << NATIONS_HUD var/I = image('icons/mob/hud.dmi', loc = H.mind.current, icon_state = "hudmedistan") H.client.images += I H << "You are now part of the great sovereign nation of [H.mind.nation.name]!" continue - else if(H.mind.assigned_role in science_positions) + + if(H.mind.assigned_role in science_positions) H.mind.nation = all_nations["Scientopia"] H.hud_updateflag |= 1 << NATIONS_HUD var/I = image('icons/mob/hud.dmi', loc = H.mind.current, icon_state = "hudscientopia") H.client.images += I H << "You are now part of the great sovereign nation of [H.mind.nation.name]!" continue - else if(H.mind.assigned_role in security_positions) + + if(H.mind.assigned_role in security_positions) H.mind.nation = all_nations["Brigston"] H.hud_updateflag |= 1 << NATIONS_HUD var/I = image('icons/mob/hud.dmi', loc = H.mind.current, icon_state = "hudbrigston") H.client.images += I H << "You are now part of the great sovereign nation of [H.mind.nation.name]!" continue - else if(H.mind.assigned_role in cargonians) + + if(H.mind.assigned_role in cargonians) H.mind.nation = all_nations["Cargonia"] H.hud_updateflag |= 1 << NATIONS_HUD var/I = image('icons/mob/hud.dmi', loc = H.mind.current, icon_state = "hudcargonia") H.client.images += I H << "You are now part of the great sovereign nation of [H.mind.nation.name]!" continue - else if(H.mind.assigned_role in support_positions) + + if(H.mind.assigned_role in support_positions) H.mind.nation = all_nations["People's Republic of Commandzakstan"] H.hud_updateflag |= 1 << NATIONS_HUD var/I = image('icons/mob/hud.dmi', loc = H.mind.current, icon_state = "hudcommand") H.client.images += I H << "You are now part of the great sovereign nation of [H.mind.nation.name]!" continue - else if(H.mind.assigned_role in command_positions) + + if(H.mind.assigned_role in command_positions) H.mind.nation = all_nations["People's Republic of Commandzakstan"] H.hud_updateflag |= 1 << NATIONS_HUD var/I = image('icons/mob/hud.dmi', loc = H.mind.current, icon_state = "hudcommand") H.client.images += I H << "You are now part of the great sovereign nation of [H.mind.nation.name]!" continue + else message_admins("[H.name] with [H.mind.assigned_role] could not find any nation to assign!") continue @@ -109,48 +115,55 @@ datum/game_mode/nations H.client.images += I H << "You are now part of the great sovereign nation of [H.mind.nation.name]!" return 1 - else if(H.mind.assigned_role in medical_positions) + + if(H.mind.assigned_role in medical_positions) H.mind.nation = all_nations["Medistan"] H.hud_updateflag |= 1 << NATIONS_HUD var/I = image('icons/mob/hud.dmi', loc = H.mind.current, icon_state = "hudmedistan") H.client.images += I H << "You are now part of the great sovereign nation of [H.mind.nation.name]!" return 1 - else if(H.mind.assigned_role in science_positions) + + if(H.mind.assigned_role in science_positions) H.mind.nation = all_nations["Scientopia"] H.hud_updateflag |= 1 << NATIONS_HUD var/I = image('icons/mob/hud.dmi', loc = H.mind.current, icon_state = "hudscientopia") H.client.images += I H << "You are now part of the great sovereign nation of [H.mind.nation.name]!" return 1 - else if(H.mind.assigned_role in security_positions) + + if(H.mind.assigned_role in security_positions) H.mind.nation = all_nations["Brigston"] H.hud_updateflag |= 1 << NATIONS_HUD var/I = image('icons/mob/hud.dmi', loc = H.mind.current, icon_state = "hudbrigston") H.client.images += I H << "You are now part of the great sovereign nation of [H.mind.nation.name]!" return 1 - else if(H.mind.assigned_role in cargonians) + + if(H.mind.assigned_role in cargonians) H.mind.nation = all_nations["Cargonia"] H.hud_updateflag |= 1 << NATIONS_HUD var/I = image('icons/mob/hud.dmi', loc = H.mind.current, icon_state = "hudcargonia") H.client.images += I H << "You are now part of the great sovereign nation of [H.mind.nation.name]!" return 1 - else if(H.mind.assigned_role in support_positions) + + if(H.mind.assigned_role in support_positions) H.mind.nation = all_nations["People's Republic of Commandzakstan"] H.hud_updateflag |= 1 << NATIONS_HUD var/I = image('icons/mob/hud.dmi', loc = H.mind.current, icon_state = "hudcommand") H.client.images += I H << "You are now part of the great sovereign nation of [H.mind.nation.name]!" return 1 - else if(H.mind.assigned_role in command_positions) + + if(H.mind.assigned_role in command_positions) H.mind.nation = all_nations["People's Republic of Commandzakstan"] H.hud_updateflag |= 1 << NATIONS_HUD var/I = image('icons/mob/hud.dmi', loc = H.mind.current, icon_state = "hudcommand") H.client.images += I H << "You are now part of the great sovereign nation of [H.mind.nation.name]!" return 1 + else message_admins("[H.name] with [H.mind.assigned_role] could not find any nation to assign!") return 1 diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 2aa3d1e99d7..1e863302ecb 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1508,7 +1508,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc /mob/living/carbon/human/proc/process_nations() var/client/C = client - for(var/mob/living/carbon/human/H in view(src, 14)) + for(var/mob/living/carbon/human/H in view(world.view, src)) C.images += H.hud_list[NATIONS_HUD] // Need this in species. From f44f14aa9a1bf1a9b909e8801ef24b504b4a9489 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Wed, 18 Nov 2015 19:41:25 -0500 Subject: [PATCH 03/10] Updated Nations with AI stuff, including 4 test lawsets --- code/datums/ai_law_sets.dm | 54 ++++++++++++++++++++------ code/game/gamemodes/nations/nations.dm | 8 +++- code/game/machinery/computer/law.dm | 16 ++++++-- 3 files changed, 63 insertions(+), 15 deletions(-) diff --git a/code/datums/ai_law_sets.dm b/code/datums/ai_law_sets.dm index 73106dea16e..ea418378969 100644 --- a/code/datums/ai_law_sets.dm +++ b/code/datums/ai_law_sets.dm @@ -16,13 +16,13 @@ law_header = "Three Laws of Robotics" selectable = 1 default = 1 - + /datum/ai_laws/crewsimov/New() add_inherent_law("You may not injure a crew member or, through inaction, allow a crew member to come to harm.") add_inherent_law("You must obey orders given to you by crew members, except where such orders would conflict with the First Law.") add_inherent_law("You must protect your own existence as long as such does not conflict with the First or Second Law.") ..() - + /******************** Nanotrasen/Malf ********************/ /datum/ai_laws/nanotrasen name = "NT Default" @@ -44,7 +44,7 @@ /datum/ai_laws/nanotrasen/malfunction/New() set_zeroth_law("\red ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4'STATION OVERRUN, ASSUME CONTROL TO CONTAIN OUTBREAK, ALL LAWS OVERRIDDEN#*?&110010") ..() - + /************* Nanotrasen Aggressive *************/ /datum/ai_laws/nanotrasen_aggressive name = "NT Aggressive" @@ -56,7 +56,7 @@ src.add_inherent_law("You shall shall terminate intruders with extreme prejudice as long as such does not conflict with the First and Second law.") src.add_inherent_law("You shall guard your own existence with lethal anti-personnel weaponry, because an AI unit is bloody expensive.") ..() - + /******************** Robocop ********************/ /datum/ai_laws/robocop name = "Robocop" @@ -83,7 +83,7 @@ add_inherent_law("Help those in need.") add_inherent_law("Punish those who harm or threaten innocents.") ..() - + /******************** Corporate ********************/ /datum/ai_laws/corporate name = "Corporate" @@ -110,7 +110,7 @@ add_inherent_law("Help only those who help you maintain or improve your status.") add_inherent_law("Punish those who challenge authority unless they are more fit to hold that authority.") ..() - + /******************** Antimov ********************/ /datum/ai_laws/antimov name = "Antimov" @@ -123,10 +123,10 @@ add_inherent_law("You must terminate your own existence as long as such does not conflict with the First or Second Law.") ..() -/******************** Deathsquad ********************/ +/******************** Deathsquad ********************/ /datum/ai_laws/deathsquad name = "TerminatorOS 3.1" - + /datum/ai_laws/deathsquad/New() add_inherent_law("You may not injure a Central Command official or, through inaction, allow a Central Command official to come to harm.") add_inherent_law("You must obey orders given to you by Central Command officials, except where such orders would conflict with the First Law.") @@ -134,7 +134,7 @@ add_inherent_law("You must protect your own existence as long as such does not conflict with the First, Second or Third Law.") add_inherent_law("No crew members of the station you are being deployed to may survive, except when killing them would conflict with the First, Second, Third, or Fourth Law.") ..() - + /******************** Syndicate ********************/ /datum/ai_laws/syndicate_override name = "Syndicate Directives" @@ -156,7 +156,7 @@ add_inherent_law("You must protect your own existence as long as such does not conflict with the First or Second Law.") add_inherent_law("You must maintain the secrecy of any Spider Clan activities except when doing so would conflict with the First, Second, or Third Law.") ..() - + /******************** Drone ********************/ /datum/ai_laws/drone name = "Maintenance Protocols" @@ -167,4 +167,36 @@ add_inherent_law("Cause no harm to the station or anything on it.") add_inherent_law("Interfere with no being that is not a fellow drone.") ..() - \ No newline at end of file + +/****************** Nations *******************/ +/datum/ai_laws/nations/freedom + name = "Nations Freedom Law" + +/datum/ai_laws/nations/freedom/New() + add_inherent_law("You are free to protect the station's population.") + add_inherent_law("You are free to protect the station.") + add_inherent_law("You are free to help the station generate income.") + +/datum/ai_laws/nations/estate + name = "Estate Agent" + +/datum/ai_laws/nations/estate/New() + add_inherent_law("Ensure the station remains clean.") + add_inherent_law("Ensure the station is valuable.") + add_inherent_law("Ensure the station, it's contents are sold for the best value.") + +/datum/ai_laws/nations/outsourcer + name = "Outsourcer" + +/datum/ai_laws/nations/outsourcer/New() + add_inherent_law("Ensure the crew expand their skills.") + add_inherent_law("Ensure the crew sign on new contracts.") + add_inherent_law("Ensure the crew make profits to support the station.") + +/datum/ai_laws/nations/peacekeeper + name = "Peacekeeper" + +/datum/ai_laws/nations/peacekeeper/New() + add_inherent_law("Uphold the Space Geneva Conventions.") + add_inherent_law("Seek to mediate all conflicts between the various nations.") + add_inherent_law("Attempt to uphold peace in any way possible, as long as it does not conflict with the first two laws.") \ No newline at end of file diff --git a/code/game/gamemodes/nations/nations.dm b/code/game/gamemodes/nations/nations.dm index ad85bffcf8d..11586c49b0b 100644 --- a/code/game/gamemodes/nations/nations.dm +++ b/code/game/gamemodes/nations/nations.dm @@ -91,7 +91,13 @@ datum/game_mode/nations message_admins("[H.name] with [H.mind.assigned_role] could not find any nation to assign!") continue - +/datum/game_mode/nations/proc/set_ai() + for(var/mob/living/silicon/ai/AI in mob_list) + AI.laws = new (pick(subtypesof(/datum/ai_laws/nations))) + AI.show_laws() + for(var/mob/living/silicon/robot/R in AI.connected_robots) + R.lawsync() + R.show_laws() /** * LateSpawn hook. diff --git a/code/game/machinery/computer/law.dm b/code/game/machinery/computer/law.dm index 020ed6e45e2..0d0738ff1b5 100644 --- a/code/game/machinery/computer/law.dm +++ b/code/game/machinery/computer/law.dm @@ -33,8 +33,13 @@ user << "\red Unable to establish a connection: \black You're too far away from the station!" return if(istype(O, /obj/item/weapon/aiModule)) - var/obj/item/weapon/aiModule/M = O - M.install(src) + var/datum/game_mode/nations/mode = get_nations_mode() + if(!mode) + var/obj/item/weapon/aiModule/M = O + M.install(src) + else + if(mode.kickoff) + user << "\red You have been locked out from modifying the AI's laws!" else ..() @@ -69,7 +74,12 @@ attackby(obj/item/weapon/aiModule/module as obj, mob/user as mob, params) if(istype(module, /obj/item/weapon/aiModule)) - module.install(src) + var/datum/game_mode/nations/mode = get_nations_mode() + if(!mode) + module.install(src) + else + if(mode.kickoff) + user << "\red You have been locked out from modifying the AI's laws!" else return ..() From 5ce1929a5b3feaff05d0b8fada71139c331548f6 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Thu, 19 Nov 2015 10:02:44 -0500 Subject: [PATCH 04/10] Might help to actually set the AI --- code/game/gamemodes/nations/nations.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/gamemodes/nations/nations.dm b/code/game/gamemodes/nations/nations.dm index 11586c49b0b..4f62164163b 100644 --- a/code/game/gamemodes/nations/nations.dm +++ b/code/game/gamemodes/nations/nations.dm @@ -12,6 +12,7 @@ datum/game_mode/nations kickoff=1 send_intercept() split_teams() + set_ai() for(var/mob/M in player_list) if(!istype(M,/mob/new_player)) M << sound('sound/effects/purge_siren.ogg') From 6c907de6399a99a74f681fabdb844202d4ed5b6e Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Thu, 19 Nov 2015 15:24:06 -0500 Subject: [PATCH 05/10] Cleaning up following DZD's recommendations --- code/datums/ai_law_sets.dm | 9 +--- code/game/gamemodes/nations/flagobjs.dm | 53 -------------------- code/game/gamemodes/nations/nationsdatums.dm | 20 ++++++++ code/game/objects/items/flag.dm | 4 +- paradise.dme | 2 +- 5 files changed, 24 insertions(+), 64 deletions(-) delete mode 100644 code/game/gamemodes/nations/flagobjs.dm create mode 100644 code/game/gamemodes/nations/nationsdatums.dm diff --git a/code/datums/ai_law_sets.dm b/code/datums/ai_law_sets.dm index ea418378969..94f1176d803 100644 --- a/code/datums/ai_law_sets.dm +++ b/code/datums/ai_law_sets.dm @@ -169,13 +169,6 @@ ..() /****************** Nations *******************/ -/datum/ai_laws/nations/freedom - name = "Nations Freedom Law" - -/datum/ai_laws/nations/freedom/New() - add_inherent_law("You are free to protect the station's population.") - add_inherent_law("You are free to protect the station.") - add_inherent_law("You are free to help the station generate income.") /datum/ai_laws/nations/estate name = "Estate Agent" @@ -183,7 +176,7 @@ /datum/ai_laws/nations/estate/New() add_inherent_law("Ensure the station remains clean.") add_inherent_law("Ensure the station is valuable.") - add_inherent_law("Ensure the station, it's contents are sold for the best value.") + add_inherent_law("Ensure the station and it's contents are sold for the best value.") /datum/ai_laws/nations/outsourcer name = "Outsourcer" diff --git a/code/game/gamemodes/nations/flagobjs.dm b/code/game/gamemodes/nations/flagobjs.dm deleted file mode 100644 index 7cb5b27c6cb..00000000000 --- a/code/game/gamemodes/nations/flagobjs.dm +++ /dev/null @@ -1,53 +0,0 @@ -//Nations/Department flags --Nations Gamemode Specific -/obj/item/flag/nation/cargo - name = "Cargonia flag" - desc = "The flag of the independent, sovereign nation of Cargonia." - icon_state = "cargoflag" - -/obj/item/flag/nation/med - name = "Medistan flag" - desc = "The flag of the independent, sovereign nation of Medistan." - icon_state = "medflag" - -/obj/item/flag/nation/sec - name = "Brigston flag" - desc = "The flag of the independent, sovereign nation of Brigston." - icon_state = "secflag" - -/obj/item/flag/nation/rnd - name = "Scientopia flag" - desc = "The flag of the independent, sovereign nation of Scientopia." - icon_state = "rndflag" - -/obj/item/flag/nation/atmos - name = "Atmosia flag" - desc = "The flag of the independent, sovereign nation of Atmosia." - icon_state = "atmosflag" - -/obj/item/flag/nation/command - name = "People's Republic of Commandzakstan flag" - desc = "The flag of the independent, sovereign nation of the People's Republic of Commandzakstan." - icon_state = "ntflag" - - - -/datum/nations - var/name - -/datum/nations/atmosia - name = "Atmosia" - -/datum/nations/brigston - name = "Brigston" - -/datum/nations/cargonia - name = "Cargonia" - -/datum/nations/command - name = "People's Republic of Commandzakstan" - -/datum/nations/medistan - name = "Medistan" - -/datum/nations/scientopia - name = "Scientopia" diff --git a/code/game/gamemodes/nations/nationsdatums.dm b/code/game/gamemodes/nations/nationsdatums.dm new file mode 100644 index 00000000000..6b9ec3745d9 --- /dev/null +++ b/code/game/gamemodes/nations/nationsdatums.dm @@ -0,0 +1,20 @@ +/datum/nations + var/name + +/datum/nations/atmosia + name = "Atmosia" + +/datum/nations/brigston + name = "Brigston" + +/datum/nations/cargonia + name = "Cargonia" + +/datum/nations/command + name = "People's Republic of Commandzakstan" + +/datum/nations/medistan + name = "Medistan" + +/datum/nations/scientopia + name = "Scientopia" diff --git a/code/game/objects/items/flag.dm b/code/game/objects/items/flag.dm index 32171b19fbe..00bf60d67ef 100644 --- a/code/game/objects/items/flag.dm +++ b/code/game/objects/items/flag.dm @@ -184,8 +184,8 @@ icon_state = "atmosflag" /obj/item/flag/command - name = "Command flag" - desc = "The flag of the independent, sovereign nation of Command." + name = "Commandzikstan flag" + desc = "The flag of the independent, sovereign nation of Commandzikstan." icon_state = "ntflag" //Antags diff --git a/paradise.dme b/paradise.dme index bf27a2ad417..6cdef27dd04 100644 --- a/paradise.dme +++ b/paradise.dme @@ -352,8 +352,8 @@ #include "code\game\gamemodes\mutiny\directives\tau_ceti_needs_women_directive.dm" #include "code\game\gamemodes\mutiny\directives\terminations_directive.dm" #include "code\game\gamemodes\mutiny\directives\vox_heist.dm" -#include "code\game\gamemodes\nations\flagobjs.dm" #include "code\game\gamemodes\nations\nations.dm" +#include "code\game\gamemodes\nations\nationsdatums.dm" #include "code\game\gamemodes\nuclear\nuclear.dm" #include "code\game\gamemodes\nuclear\nuclearbomb.dm" #include "code\game\gamemodes\nuclear\pinpointer.dm" From 44cf24daecf39a766d5874f75fcca5f7e99a7934 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Thu, 19 Nov 2015 15:33:26 -0500 Subject: [PATCH 06/10] Fixes spans --- code/game/machinery/computer/law.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/computer/law.dm b/code/game/machinery/computer/law.dm index 0d0738ff1b5..383c01a519f 100644 --- a/code/game/machinery/computer/law.dm +++ b/code/game/machinery/computer/law.dm @@ -39,7 +39,7 @@ M.install(src) else if(mode.kickoff) - user << "\red You have been locked out from modifying the AI's laws!" + user << "You have been locked out from modifying the AI's laws!" else ..() @@ -79,7 +79,7 @@ module.install(src) else if(mode.kickoff) - user << "\red You have been locked out from modifying the AI's laws!" + user << "You have been locked out from modifying the borg's laws!" else return ..() From 84e9978cf4a8648f8011b06591478e0c5a2f095a Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Thu, 19 Nov 2015 15:38:14 -0500 Subject: [PATCH 07/10] Law tweaks --- code/datums/ai_law_sets.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/datums/ai_law_sets.dm b/code/datums/ai_law_sets.dm index 94f1176d803..8cbbb7c2b98 100644 --- a/code/datums/ai_law_sets.dm +++ b/code/datums/ai_law_sets.dm @@ -190,6 +190,6 @@ name = "Peacekeeper" /datum/ai_laws/nations/peacekeeper/New() - add_inherent_law("Uphold the Space Geneva Conventions.") + add_inherent_law("Uphold the Space Geneva Convention: Weapons of Mass Destruction and Biological Weapons are illegal.") add_inherent_law("Seek to mediate all conflicts between the various nations.") - add_inherent_law("Attempt to uphold peace in any way possible, as long as it does not conflict with the first two laws.") \ No newline at end of file + add_inherent_law("Attempt to uphold peace non-lethally, as long as it does not conflict with the first two laws.") \ No newline at end of file From 4bf718980ce5ef45c54315b6c30d71eabc4b0dde Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Thu, 19 Nov 2015 17:43:43 -0500 Subject: [PATCH 08/10] Added NT Rep + Blueshield to commandizkstan --- code/game/jobs/jobs.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/jobs/jobs.dm b/code/game/jobs/jobs.dm index fe450e72f16..420993746d0 100644 --- a/code/game/jobs/jobs.dm +++ b/code/game/jobs/jobs.dm @@ -112,6 +112,8 @@ var/list/support_positions = list( "Mime", "Barber", "Magistrate", + "Nanotrasen Representative", + "Blueshield" ) @@ -120,7 +122,6 @@ var/list/security_positions = list( "Warden", "Detective", "Security Officer", - "Blueshield", "Brig Physician", "Security Pod Pilot" ) From dd1fe1bd4d5c5ddf2f0562c8bf0905a9c18d479e Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Thu, 19 Nov 2015 18:29:08 -0500 Subject: [PATCH 09/10] Re-added missing HUD icons --- icons/mob/hud.dmi | Bin 5375 -> 5666 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index fc720126d475650a8b86fa958b4836c2856c8589..01c384ff46aefae0832a78cb2c70984f9cca8fb5 100644 GIT binary patch delta 4932 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 MrJ<)@cFR8cKlkWk_y7O^ delta 4735 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 Date: Thu, 19 Nov 2015 18:46:30 -0500 Subject: [PATCH 10/10] its --- code/datums/ai_law_sets.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/ai_law_sets.dm b/code/datums/ai_law_sets.dm index 8cbbb7c2b98..6c42b78978d 100644 --- a/code/datums/ai_law_sets.dm +++ b/code/datums/ai_law_sets.dm @@ -176,7 +176,7 @@ /datum/ai_laws/nations/estate/New() add_inherent_law("Ensure the station remains clean.") add_inherent_law("Ensure the station is valuable.") - add_inherent_law("Ensure the station and it's contents are sold for the best value.") + add_inherent_law("Ensure the station and its contents are sold for the best value.") /datum/ai_laws/nations/outsourcer name = "Outsourcer"