diff --git a/backend/rorapp/functions/faction_leader_helper.py b/backend/rorapp/functions/faction_leader_helper.py index 6ead304a..5402e5a7 100644 --- a/backend/rorapp/functions/faction_leader_helper.py +++ b/backend/rorapp/functions/faction_leader_helper.py @@ -3,10 +3,14 @@ from rorapp.functions.action_helper import delete_old_actions from rorapp.functions.concession_helper import generate_assign_concessions_action from rorapp.functions.forum_phase_helper import ( - generate_initiate_situation_action, generate_select_faction_leader_action, + initiate_situation, +) +from rorapp.functions.progress_helper import ( + create_step_and_message, + get_phase, + get_step, ) -from rorapp.functions.progress_helper import get_phase, get_step from rorapp.functions.revolution_phase_starter import start_revolution_phase from rorapp.functions.websocket_message_helper import ( create_websocket_message, @@ -192,20 +196,13 @@ def proceed_to_next_step_if_forum_phase(game_id, step, faction) -> List[dict]: if next_faction is not None: if step.phase.name.startswith("Final"): - latest_step = get_step(faction.game.id) - latest_phase = get_phase(faction.game.id) - new_step = Step(index=latest_step.index + 1, phase=latest_phase) - new_step.save() - messages_to_send.append( - create_websocket_message("step", StepSerializer(new_step).data) - ) + new_step, message = create_step_and_message(faction.game.id) + messages_to_send.append(message) messages_to_send.append( generate_select_faction_leader_action(next_faction, new_step) ) else: - messages_to_send.extend( - generate_initiate_situation_action(next_faction) - ) + messages_to_send.extend(initiate_situation(next_faction.id)) else: if step.phase.name.startswith("Final"): messages_to_send.extend(end_game_with_influence_victory(game_id)) diff --git a/backend/rorapp/functions/forum_phase_helper.py b/backend/rorapp/functions/forum_phase_helper.py index d3ab323d..87d98111 100644 --- a/backend/rorapp/functions/forum_phase_helper.py +++ b/backend/rorapp/functions/forum_phase_helper.py @@ -29,9 +29,7 @@ ) -def generate_select_faction_leader_action( - faction: Faction, step: Step | None = None -) -> dict: +def generate_select_faction_leader_action(faction: Faction, step: Step) -> dict: senators = Senator.objects.filter(faction=faction, alive=True) senator_id_list = [senator.id for senator in senators] action = Action( @@ -45,94 +43,57 @@ def generate_select_faction_leader_action( return create_websocket_message("action", ActionSerializer(action).data) -def generate_initiate_situation_action(faction: Faction) -> list[dict]: - messages_to_send = [] - - # Create new step - latest_step = get_step(faction.game.id) - # Need to get latest phase because the latest step might not be from the current forum phase - latest_phase = get_phase(faction.game.id) - new_step = Step(index=latest_step.index + 1, phase=latest_phase) - new_step.save() - messages_to_send.append( - create_websocket_message("step", StepSerializer(new_step).data) - ) - - # Create new action - action = Action( - step=new_step, - faction=faction, - type="initiate_situation", - required=True, - ) - action.save() - messages_to_send.append( - create_websocket_message("action", ActionSerializer(action).data) - ) - return messages_to_send - - -def initiate_situation(action_id: int) -> tuple[Response, list[dict]]: +def initiate_situation(faction_id: int) -> list[dict]: """ Initiate a random situation. - This function is called when a player initiates a situation during the forum phase. - Args: action_id (int): The action ID. Returns: - dict: The response with a message and a status code. + dict: The WebSocket messages to send. """ messages_to_send = [] - # Mark the action as complete - action = Action.objects.get(id=action_id) - action.completed = True - action.save() - messages_to_send.append(destroy_websocket_message("action", action_id)) + faction = Faction.objects.get(id=faction_id) + assert isinstance(faction, Faction) # Get situation - situation = ( - Situation.objects.filter(game=action.step.phase.turn.game) - .order_by("index") - .last() - ) + situation = Situation.objects.filter(game=faction.game).order_by("index").last() assert isinstance(situation, Situation) + _, message = create_step_and_message(faction.game.id) + messages_to_send.append(message) + if situation.secret: - messages_to_send.extend(create_new_secret(action.faction.id, situation.name)) + messages_to_send.extend(create_new_secret(faction.id, situation.name)) situation.delete() else: match situation.type: case "war": - messages_to_send.extend( - create_new_war(action.faction.id, situation.name) - ) + messages_to_send.extend(create_new_war(faction.id, situation.name)) situation.delete() case "senator": - messages_to_send.extend( - create_new_family(action.faction.id, situation.name) - ) + messages_to_send.extend(create_new_family(faction.id, situation.name)) situation.delete() case "leader": messages_to_send.extend( - create_new_enemy_leader(action.faction.id, situation.name) + create_new_enemy_leader(faction.id, situation.name) ) situation.delete() # If no more situations remain then rename the current phase to "Final Forum Phase", # triggering the end of the game once the phase is completed - if Situation.objects.filter(game=action.step.phase.turn.game).count() == 0: - current_phase = get_phase(action.faction.game.id) + if Situation.objects.filter(game=faction.game).count() == 0: + current_phase = get_phase(faction.game.id) current_phase.name = "Final Forum" current_phase.save() messages_to_send.append( create_websocket_message("phase", PhaseSerializer(current_phase).data) ) - latest_step = get_step(action.faction.game.id) + latest_step = get_step(faction.game.id) new_action_log_index = ( - ActionLog.objects.filter(step__phase__turn__game=action.faction.game.id) + ActionLog.objects.filter(step__phase__turn__game=faction.game.id) .order_by("-index")[0] .index + 1 @@ -149,14 +110,8 @@ def initiate_situation(action_id: int) -> tuple[Response, list[dict]]: ) ) - # Create new step - new_step = Step(index=action.step.index + 1, phase=action.step.phase) - new_step.save() - messages_to_send.append( - create_websocket_message("step", StepSerializer(new_step).data) - ) + step, message = create_step_and_message(faction.game.id) + messages_to_send.append(message) - messages_to_send.append( - generate_select_faction_leader_action(action.faction, new_step) - ) - return Response({"message": "Initiated"}, status=200), messages_to_send + messages_to_send.append(generate_select_faction_leader_action(faction, step)) + return messages_to_send diff --git a/backend/rorapp/functions/forum_phase_starter.py b/backend/rorapp/functions/forum_phase_starter.py index bc8b6164..61a60071 100644 --- a/backend/rorapp/functions/forum_phase_starter.py +++ b/backend/rorapp/functions/forum_phase_starter.py @@ -1,6 +1,6 @@ from typing import List from rorapp.functions.action_helper import delete_old_actions -from rorapp.functions.forum_phase_helper import generate_initiate_situation_action +from rorapp.functions.forum_phase_helper import initiate_situation from rorapp.functions.progress_helper import create_phase_and_message from rorapp.models import Faction @@ -24,6 +24,6 @@ def start_forum_phase(game_id: int) -> List[dict]: # Create action and new step first_faction = Faction.objects.filter(game__id=game_id).order_by("rank").first() assert isinstance(first_faction, Faction) - messages_to_send.extend(generate_initiate_situation_action(first_faction)) + messages_to_send.extend(initiate_situation(first_faction.id)) messages_to_send.extend(delete_old_actions(game_id)) return messages_to_send diff --git a/backend/rorapp/tests/forum_phase_tests.py b/backend/rorapp/tests/forum_phase_tests.py index 1aeb7f68..3b7678ba 100644 --- a/backend/rorapp/tests/forum_phase_tests.py +++ b/backend/rorapp/tests/forum_phase_tests.py @@ -4,6 +4,7 @@ from rest_framework.test import APIClient from rorapp.functions import delete_all_games, generate_game, start_game from rorapp.functions.faction_leader_helper import select_faction_leader +from rorapp.functions.forum_phase_helper import initiate_situation from rorapp.functions.forum_phase_starter import start_forum_phase from rorapp.functions.progress_helper import get_step from rorapp.functions.war_helper import create_new_war @@ -48,7 +49,7 @@ def test_new_family(self) -> None: Ensure that a new senator is created when the new family situation is initiated. """ - game_id, _ = self.setup_game_in_forum_phase(3) + game_id, _ = self.setup_game(3) faction = Faction.objects.get(game=game_id, position=1) # Delete all non-senator situations to ensure that the next situation is a senator situation @@ -68,7 +69,7 @@ def test_new_family(self) -> None: original_senator_count = Senator.objects.filter(game=game_id).count() # Initiate senator situation - self.initiate_situation(game_id) + initiate_situation(faction.id) new_family_action_log = self.get_and_check_latest_action_log( game_id, "new_family" ) @@ -93,7 +94,7 @@ def test_new_war(self) -> None: Ensure that a new war is created when the new war situation is initiated. """ - game_id, _ = self.setup_game_in_forum_phase(3) + game_id, _ = self.setup_game(3) faction = Faction.objects.get(game=game_id, position=1) # Delete all non-war situations to ensure that the next situation is a senator situation @@ -108,12 +109,10 @@ def test_new_war(self) -> None: self.assertEqual(remaining_situations.count(), STARTING_WAR_SITUATION_COUNT) for situation in remaining_situations: self.assertEqual(situation.type, "war") - war_count = War.objects.filter(game=game_id).count() self.assertEqual(war_count, STARTING_WAR_COUNT) - # Initiate new war situation - self.initiate_situation(game_id) + initiate_situation(faction.id) new_war_action_log = self.get_and_check_latest_action_log(game_id, "new_war") self.assertEqual(new_war_action_log.data["initiating_faction"], faction.id) new_war_id = new_war_action_log.data["war"] @@ -135,7 +134,7 @@ def test_matching_war(self) -> None: Ensure that the 1st Punic War is activated when the 2nd Punic War is initiated. """ - game_id, _ = self.setup_game_in_forum_phase(3) + game_id, _ = self.setup_game(3) faction = Faction.objects.get(game=game_id, position=1) # Ensure that the next situation is the 2nd Punic War @@ -143,8 +142,7 @@ def test_matching_war(self) -> None: situation.index = 100 situation.save() - self.initiate_situation(game_id) - + initiate_situation(faction.id) new_war_action_log = self.get_and_check_latest_action_log(game_id, "new_war", 1) self.assertEqual(new_war_action_log.data["initiating_faction"], faction.id) matched_war_action_log = self.get_and_check_latest_action_log( @@ -165,7 +163,7 @@ def test_matching_war_reverse_order(self) -> None: Ensure that the 2nd Macedonian war is activated when the 1st Macedonian War is initiated. """ - game_id, _ = self.setup_game_in_forum_phase(3) + game_id, _ = self.setup_game(3) faction = Faction.objects.get(game=game_id, position=1) create_new_war(faction.id, "Macedonian 2") self.get_and_check_latest_action_log(game_id, "new_war") @@ -175,7 +173,7 @@ def test_matching_war_reverse_order(self) -> None: situation.index = 100 situation.save() - self.initiate_situation(game_id) + initiate_situation(faction.id) new_war_action_log = self.get_and_check_latest_action_log(game_id, "new_war", 1) self.assertEqual(new_war_action_log.data["initiating_faction"], faction.id) matched_war_action_log = self.get_and_check_latest_action_log( @@ -196,7 +194,7 @@ def test_create_leader_then_new_war(self) -> None: Ensure that Philip V joins and activates the matching 2nd Macedonian War when it's initiated. """ - game_id, _ = self.setup_game_in_forum_phase(3) + game_id, _ = self.setup_game(3) faction = Faction.objects.get(game=game_id, position=1) create_new_enemy_leader(faction.id, "Philip V") @@ -205,7 +203,7 @@ def test_create_leader_then_new_war(self) -> None: situation.index = 100 situation.save() - self.initiate_situation(game_id) + initiate_situation(faction.id) new_war_action_log = self.get_and_check_latest_action_log(game_id, "new_war", 1) self.assertEqual(new_war_action_log.data["initiating_faction"], faction.id) matched_enemy_leader_action_log = self.get_and_check_latest_action_log( @@ -230,7 +228,7 @@ def test_create_leader_then_new_inherently_active_war(self) -> None: Ensure that Philip V joins the matching and inherently active 1st Macedonian War when it's initiated. """ - game_id, _ = self.setup_game_in_forum_phase(3) + game_id, _ = self.setup_game(3) faction = Faction.objects.get(game=game_id, position=1) create_new_enemy_leader(faction.id, "Philip V") @@ -239,7 +237,7 @@ def test_create_leader_then_new_inherently_active_war(self) -> None: situation.index = 100 situation.save() - self.initiate_situation(game_id) + initiate_situation(faction.id) new_war_action_log = self.get_and_check_latest_action_log(game_id, "new_war", 1) self.assertEqual(new_war_action_log.data["initiating_faction"], faction.id) matched_enemy_leader_action_log = self.get_and_check_latest_action_log( @@ -262,7 +260,7 @@ def test_create_enemy_leaders_then_new_war(self) -> None: Ensure that Hamilcar and Hannibal join the matching and inherently active 2nd Punic War when it's initiated. """ - game_id, _ = self.setup_game_in_forum_phase(3) + game_id, _ = self.setup_game(3) faction = Faction.objects.get(game=game_id, position=1) # Mark the 1st Punic War as defeated to ensure that Hamilcar and Hannibal join the 2nd Punic War when it comes up @@ -278,7 +276,7 @@ def test_create_enemy_leaders_then_new_war(self) -> None: situation.index = 100 situation.save() - self.initiate_situation(game_id) + initiate_situation(faction.id) new_war_action_log = self.get_and_check_latest_action_log(game_id, "new_war", 2) self.assertEqual(new_war_action_log.data["initiating_faction"], faction.id) matched_enemy_leader_action_logs = [ @@ -303,7 +301,7 @@ def test_existing_war_then_new_enemy_leader(self) -> None: Ensure that when Hannibal is initiated, he joins and activates the matching 1st Punic War. """ - game_id, _ = self.setup_game_in_forum_phase(3) + game_id, _ = self.setup_game(3) faction = Faction.objects.get(game=game_id, position=1) # Ensure that the next situation is Hannibal @@ -311,7 +309,7 @@ def test_existing_war_then_new_enemy_leader(self) -> None: situation.index = 100 situation.save() - self.initiate_situation(game_id) + initiate_situation(faction.id) new_enemy_leader_action_log = self.get_and_check_latest_action_log( game_id, "new_enemy_leader", 1 ) @@ -333,7 +331,7 @@ def test_new_secret(self) -> None: Ensure that a secret and an action log are issued when a faction initiates the related situation. """ - game_id, _ = self.setup_game_in_forum_phase(3) + game_id, _ = self.setup_game(3) faction = Faction.objects.get(game=game_id, position=1) # Delete all non-secret situations to ensure that the next situation is a secret @@ -344,7 +342,7 @@ def test_new_secret(self) -> None: assert isinstance(next_secret_situation, Situation) initial_secret_count = Secret.objects.filter(faction__game=game_id).count() - self.initiate_situation(game_id) + initiate_situation(faction.id) new_secret_action_log = self.get_and_check_latest_action_log( game_id, "new_secret" ) @@ -361,7 +359,7 @@ def test_new_concession_secret(self) -> None: Ensure that a concession secret and an action log are issued when a faction initiates the related situation. """ - game_id, _ = self.setup_game_in_forum_phase(3) + game_id, _ = self.setup_game(3) game = Game.objects.get(id=game_id) faction = Faction.objects.get(game=game_id, position=1) @@ -374,7 +372,7 @@ def test_new_concession_secret(self) -> None: secrets = Secret.objects.filter(faction__game=game_id) initial_secret_count = secrets.count() - self.initiate_situation(game_id) + initiate_situation(faction.id) new_secret_action_log = self.get_and_check_latest_action_log( game_id, "new_secret" ) @@ -393,7 +391,7 @@ def test_new_statesman_secret(self) -> None: Ensure that a statesman secret and an action log are issued when a faction initiates the related situation. """ - game_id, _ = self.setup_game_in_forum_phase(3) + game_id, _ = self.setup_game(3) game = Game.objects.get(id=game_id) faction = Faction.objects.get(game=game_id, position=1) @@ -410,7 +408,7 @@ def test_new_statesman_secret(self) -> None: secrets = Secret.objects.filter(faction__game=game_id) initial_secret_count = secrets.count() - self.initiate_situation(game_id) + initiate_situation(faction.id) new_secret_action_log = self.get_and_check_latest_action_log( game_id, "new_secret" ) @@ -430,12 +428,13 @@ def test_era_ends(self) -> None: Check that the game ends (no potential actions) once the Final Forum Phase is over, and that the "faction_wins" action log is generated. """ - game_id, _ = self.setup_game_in_forum_phase(3) + game_id, _ = self.setup_game(3) + faction = Faction.objects.get(game=game_id, position=1) # Delete all situations except for one to ensure that the next situation is the last one Situation.objects.filter(game=game_id).exclude(index=0).delete() - self.initiate_situation(game_id) + initiate_situation(faction.id) self.get_and_check_latest_action_log(game_id, "era_ends") check_latest_phase(self, game_id, "Final Forum") @@ -465,17 +464,6 @@ def check_potential_action_count(self, game_id: int, expected_count: int) -> Non completed_actions = Action.objects.filter(step=step, completed=False) self.assertEqual(completed_actions.count(), expected_count) - def initiate_situation(self, game_id: int) -> None: - check_latest_phase(self, game_id, "Forum") - situation_potential_actions = get_and_check_actions( - self, game_id, False, "initiate_situation", 1 - ) - submit_actions( - self, - game_id, - situation_potential_actions, - ) - def get_and_check_latest_action_log( self, game_id: int, expected_type: str, reverse_index: int = 0 ) -> ActionLog: @@ -495,24 +483,14 @@ def faction_leader_action_processor(self, action: Action) -> dict: return {"leader_id": first_senator.id} def do_forum_phase_test(self, player_count: int) -> None: - game_id, faction_ids_with_leadership = self.setup_game_in_forum_phase( - player_count - ) + game_id, faction_ids_with_leadership = self.setup_game(player_count) + start_forum_phase(game_id) # Ensure that the game starts with correct number of situations situations = Situation.objects.filter(game=game_id) - self.assertEqual(situations.count(), 63 - player_count * 6) + self.assertEqual(situations.count(), 62 - player_count * 6) for _ in range(0, player_count): - check_latest_phase(self, game_id, "Forum") - situation_potential_actions = get_and_check_actions( - self, game_id, False, "initiate_situation", 1 - ) - submit_actions( - self, - game_id, - situation_potential_actions, - ) check_latest_phase(self, game_id, "Forum") faction_leader_potential_actions = get_and_check_actions( self, game_id, False, "select_faction_leader", 1 @@ -546,13 +524,12 @@ def do_forum_phase_test(self, player_count: int) -> None: check_latest_phase(self, game_id, "Revolution") check_old_actions_deleted(self, game_id) - def setup_game_in_forum_phase(self, player_count: int) -> tuple[int, List[int]]: + def setup_game(self, player_count: int) -> tuple[int, List[int]]: self.client = APIClient() random.seed(1) game_id = generate_game(player_count) start_game(game_id) faction_ids_with_leadership = set_some_faction_leaders(game_id) - start_forum_phase(game_id) return (game_id, faction_ids_with_leadership) diff --git a/backend/rorapp/tests/mortality_phase_tests.py b/backend/rorapp/tests/mortality_phase_tests.py index 4ee91341..f348c79a 100644 --- a/backend/rorapp/tests/mortality_phase_tests.py +++ b/backend/rorapp/tests/mortality_phase_tests.py @@ -26,7 +26,7 @@ class MortalityPhaseTests(TestCase): """ def setUp(self) -> None: - random.seed(5) + random.seed(6) self.client = APIClient() delete_all_games() @@ -109,7 +109,7 @@ def kill_hrao(self, game_id: int) -> None: )[0] logs, messages = self.kill_senators(game_id, [highest_ranking_senator.id]) - self.assertEqual(len(messages), 33) + self.assertEqual(len(messages), 37) latest_log = logs[0] self.assertIsNone(latest_log.data["heir_senator"]) @@ -128,7 +128,7 @@ def kill_hrao(self, game_id: int) -> None: def kill_faction_leader(self, game_id: int) -> None: living_senator_count = Senator.objects.filter(game=game_id, alive=True).count() faction_leader = self.get_senators_with_title(game_id, "Faction Leader")[0] - self.assertEqual(faction_leader.name, "Aurelius") + self.assertEqual(faction_leader.name, "Aemilius") faction_leader_title = Title.objects.get(senator=faction_leader) logs, _ = self.kill_senators(game_id, [faction_leader.id]) @@ -136,7 +136,7 @@ def kill_faction_leader(self, game_id: int) -> None: heir_id = latest_log.data["heir_senator"] heir = Senator.objects.get(id=heir_id) - self.assertEqual(heir.name, "Aurelius") + self.assertEqual(heir.name, "Aemilius") heir_title = Title.objects.get(senator=heir.id) self.assertEqual(heir_title.start_step, latest_log.step) diff --git a/backend/rorapp/views/submit_action.py b/backend/rorapp/views/submit_action.py index 658af7d4..86d9869c 100644 --- a/backend/rorapp/views/submit_action.py +++ b/backend/rorapp/views/submit_action.py @@ -76,8 +76,6 @@ def perform_action( ) case "face_mortality": response, messages = face_mortality(action.id) - case "initiate_situation": - response, messages = initiate_situation(action.id) case "assign_concessions": response, messages = assign_concessions(action.id, request.data) diff --git a/frontend/components/Dialog.tsx b/frontend/components/Dialog.tsx index 2bbb6b22..5b34c479 100644 --- a/frontend/components/Dialog.tsx +++ b/frontend/components/Dialog.tsx @@ -4,7 +4,6 @@ import Collection from "@/classes/Collection" import Action from "@/classes/Action" import SelectFactionLeaderDialog from "@/components/actionDialogs/SelectFactionLeaderDialog" import FaceMortalityDialog from "@/components/actionDialogs/FaceMortalityDialog" -import InitiateSituationDialog from "@/components/actionDialogs/InitiateSituationDialog" import AssignConcessionsDialog from "@/components/actionDialogs/AssignConcessionsDialog" interface ActionDialogProps { @@ -17,7 +16,6 @@ interface ActionDialogProps { const dialogs: { [key: string]: React.ComponentType } = { select_faction_leader: SelectFactionLeaderDialog, face_mortality: FaceMortalityDialog, - initiate_situation: InitiateSituationDialog, assign_concessions: AssignConcessionsDialog, } diff --git a/frontend/components/actionDialogs/InitiateSituationDialog.tsx b/frontend/components/actionDialogs/InitiateSituationDialog.tsx deleted file mode 100644 index 17bab18b..00000000 --- a/frontend/components/actionDialogs/InitiateSituationDialog.tsx +++ /dev/null @@ -1,104 +0,0 @@ -import { useEffect, useState } from "react" -import { - Button, - Dialog, - DialogActions, - DialogContent, - DialogTitle, - IconButton, -} from "@mui/material" -import CloseIcon from "@mui/icons-material/Close" - -import Action from "@/classes/Action" -import Collection from "@/classes/Collection" -import request from "@/functions/request" -import { useCookieContext } from "@/contexts/CookieContext" -import { useGameContext } from "@/contexts/GameContext" -import TermLink from "@/components/TermLink" - -interface InitiateSituationDialogProps { - onClose: () => void - actions: Collection -} - -// Action dialog allows the player to ready up for mortality -const InitiateSituationDialog = ({ - onClose, - actions, -}: InitiateSituationDialogProps) => { - const { - accessToken, - refreshToken, - setAccessToken, - setRefreshToken, - setUser, - } = useCookieContext() - const { game, dialog, setDialog } = useGameContext() - - const [requiredAction, setRequiredAction] = useState(null) - - // Set required action - useEffect(() => { - const requiredAction = actions.asArray.find((a) => a.required === true) - if (requiredAction) setRequiredAction(requiredAction) - }, [actions]) - - // Handle dialog submission - const handleSubmit = async () => { - if (game && requiredAction) { - request( - "POST", - `games/${game.id}/submit-action/${requiredAction.id}/`, - accessToken, - refreshToken, - setAccessToken, - setRefreshToken, - setUser - ) - setDialog(null) - } - } - - return ( - - Initiate a Situation -
- setDialog(null)}> - - -
- - -
- “Fate leads the willing, and drags along the reluctant.” - Seneca the Younger -
-

- You must initiate a random Situation, resulting in one of the - following outcomes: -

-
    -
  • - Your gains a -
  • -
  • - The Senate is joined by a new -
  • -
  • - Rome faces a new -
  • -
  • - Rome faces a new -
  • -
  • An Event occurs
  • -
-
- - - - -
- ) -} - -export default InitiateSituationDialog diff --git a/frontend/data/actions.json b/frontend/data/actions.json index 60ecdcf5..5519b460 100644 --- a/frontend/data/actions.json +++ b/frontend/data/actions.json @@ -7,10 +7,6 @@ "sentence": "Face Mortality", "title": "Face Mortality" }, - "initiate_situation": { - "sentence": "initiate a Situation", - "title": "Initiate Situation" - }, "assign_concessions": { "sentence": "assign Concessions", "title": "Assign Concessions"