Skip to content

Instantly share code, notes, and snippets.

@dc03
Last active June 13, 2022 13:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dc03/dcc76bf54b50b3fe833919deb24db7b6 to your computer and use it in GitHub Desktop.
Save dc03/dcc76bf54b50b3fe833919deb24db7b6 to your computer and use it in GitHub Desktop.
diff --git a/lgm/IDE_EDIT_events.h.sorted b/egm/IDE_EDIT_events.h.sorted
index dce1630..c2f81cf 100644
--- a/lgm/IDE_EDIT_events.h.sorted
+++ b/egm/IDE_EDIT_events.h.sorted
@@ -163,7 +163,7 @@
event_beginstep = events + 0;
event_beginstep->name = "Begin Step";
event_collision = events + 16;
- event_collision->name = "Collision obj_myplane";
+ event_collision->name = "Collision obj_side_bullet_right";
event_draw = events + 19;
event_draw->name = "Draw";
event_endstep = events + 17;
@@ -290,6 +290,5 @@ namespace enigma
variant ev_perf(int type, int numb) {
** WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS **
// We never want to iterate draw; we let screen_redraw() handle it.
- window_set_cursor(cr_none);
** with this code. If not, see <http://www.gnu.org/licenses/> **
** You should have recieved a copy of the GNU General Public License along **
diff --git a/lgm/IDE_EDIT_evparent.h.sorted b/egm/IDE_EDIT_evparent.h.sorted
index c0b531a..869d657 100644
--- a/lgm/IDE_EDIT_evparent.h.sorted
+++ b/egm/IDE_EDIT_evparent.h.sorted
@@ -104,7 +104,7 @@ namespace enigma
virtual variant myevents_perf(int type, int numb) {return 0;}
virtual variant myevent_step() {
virtual void myevent_alarm() { } // No default Alarm 0 code.
- virtual void myevent_collision_dispatcher() { } // No default Collision obj_myplane code.
+ virtual void myevent_collision_dispatcher() { } // No default Collision obj_side_bullet_right code.
virtual void timeline_call_moment_script(int timeline_index, int moment_index) {
//virtual void unlink() {} // This is already declared at the super level.
** WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS **
diff --git a/lgm/IDE_EDIT_fontinfo.h.sorted b/egm/IDE_EDIT_fontinfo.h.sorted
index 2e22f66..6814e0b 100644
--- a/lgm/IDE_EDIT_fontinfo.h.sorted
+++ b/egm/IDE_EDIT_fontinfo.h.sorted
@@ -20,7 +20,6 @@
** details. **
//Editing it is a sign of a certain medical condition. We're not sure which one.
#endif
- {"EnigmaDefault", -1, "Dialog.plain", 12, 0, 0, 1},
** ENIGMA is an environment designed to create games and other programs with a **
** ENIGMA is free software: you can redistribute it and/or modify it under the **
** FOR A PARTICULAR PURPOSE. See the GNU General Public License for more **
@@ -28,10 +27,10 @@
** high-level, fully compilable language. Developers of ENIGMA or anything **
#ifndef JUST_DEFINE_IT_RUN
#include "Universal_System/Resources/fonts_internal.h"
- int rawfontcount = 2, rawfontmaxid = 0;
+ int rawfontcount = 1, rawfontmaxid = 0;
namespace enigma {
** or programs made in the environment. **
- {"score_font", 0, "Arial", 14, 1, 0, 1},
+ {"score_font", 0, "Arial", 14, 1, 0, 0},
std::vector<rawfont> rawfontdata = {
** terms of the GNU General Public License as published by the Free Software **
** This application and its source code is distributed AS-IS, WITHOUT ANY **
diff --git a/lgm/IDE_EDIT_globals.h.sorted b/egm/IDE_EDIT_globals.h.sorted
index a277964..a79845a 100644
--- a/lgm/IDE_EDIT_globals.h.sorted
+++ b/egm/IDE_EDIT_globals.h.sorted
@@ -31,7 +31,7 @@
bool gameInfoShowBorder = 0;
bool gameInfoStayOnTop = 0;
bool interpolate_textures = 0;
- bool isFullScreen = 1;
+ bool isFullScreen = 0;
bool isSizeable = 0;
bool showBorder = 1;
bool showIcons = 1;
@@ -52,7 +52,7 @@ const int variant::default_type = ty_undefined;
int gameInfoLeft = 0;
int gameInfoTop = 0;
int gameInfoWidth = 0;
- int viewScale = -1;
+ int viewScale = 0;
int windowColor = 0;
namespace enigma
namespace enigma {
@@ -68,7 +68,7 @@ namespace enigma_user {
** This application and its source code is distributed AS-IS, WITHOUT ANY **
** This file is a part of the ENIGMA Development Environment. **
//This file was generated by the ENIGMA Development Environment.
- unsigned int game_id = 419131;
+ unsigned int game_id = 0;
variant argument0 = 0, argument1 = 0, argument2 = 0, argument3 = 0, argument4 = 0, argument5 = 0, argument6 = 0, argument7 = 0, argument8 = 0, argument9 = 0, argument10 = 0, argument11 = 0, argument12 = 0, argument13 = 0, argument14 = 0, argument15 = 0;
** WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS **
** with this code. If not, see <http://www.gnu.org/licenses/> **
diff --git a/lgm/IDE_EDIT_objectdeclarations.h.sorted b/egm/IDE_EDIT_objectdeclarations.h.sorted
index e562a51..bb2fa4a 100644
--- a/lgm/IDE_EDIT_objectdeclarations.h.sorted
+++ b/egm/IDE_EDIT_objectdeclarations.h.sorted
@@ -1944,7 +1944,7 @@ namespace enigma // TODO: Replace with enigma_user
struct OBJ_controller_enemy: object_locals
struct OBJ_controller_life: object_locals
struct OBJ_controller_new_life: object_locals
- struct object_locals: event_parent /* IniFilesystem */,
+ struct object_locals: event_parent,
struct OBJ_obj_back_bullet: object_locals
struct OBJ_obj_bullet: object_locals
struct OBJ_obj_enemy1: object_locals
@@ -2119,6 +2119,7 @@ namespace enigma // TODO: Replace with enigma_user
variant myevent_step();
variant myevent_step();
variant myevent_step();
+ var __if__;
virtual bool can_cast(int obj) const;
virtual bool can_cast(int obj) const;
virtual bool can_cast(int obj) const;
@@ -2141,8 +2142,8 @@ namespace enigma // TODO: Replace with enigma_user
virtual bool can_cast(int obj) const;
virtual bool can_cast(int obj) const;
virtual bool can_cast(int obj) const;
- virtual extension_alarm /* libpng */ /* ParticleSystems */ /* Timelines */
- virtual extension_path /* DateTime */ /* MotionPlanning */ /* DataStructures */,
+ virtual extension_alarm,
+ virtual extension_path /* libpng */ /* DataStructures */ /* Timelines */ /* MotionPlanning */ /* DateTime */ /* GTest */
visible = enigma::objectdata[0]->visible;
visible = enigma::objectdata[10]->visible;
visible = enigma::objectdata[11]->visible;
diff --git a/lgm/IDE_EDIT_objectfunctionality.h.sorted b/egm/IDE_EDIT_objectfunctionality.h.sorted
index f850469..c1ae7a5 100644
--- a/lgm/IDE_EDIT_objectfunctionality.h.sorted
+++ b/egm/IDE_EDIT_objectfunctionality.h.sorted
@@ -1564,7 +1564,7 @@
}
$out_of_health = (health <= 0);
action_change_object(obj_explosion2, 0);
- action_color(0x00FFFF);
+ action_color(65535);
action_create_object(obj_back_bullet, 35, 35);
action_create_object(obj_bullet, 20, 40);
action_create_object(obj_bullet, 45, 5);
@@ -1615,8 +1615,8 @@
action_draw_score(180, 440, "");
action_draw_sprite(spr_bottom, 0, 404, - 1);
action_font(score_font, 0);
- action_highscore_show(back_score, 0, 0x0000FF, 0x000000, Arial, 12, 0, 1, 0, 0, 0);
- action_kill_object();
+ action_highscore_show(back_score, 0, 255, 0, Arial, 12, 0, 1, 0, 0, 0);
+ action_kill_object();
action_kill_object();
action_kill_object();
action_kill_object();
@@ -2036,6 +2036,90 @@ bool enigma::OBJ_obj_side_bullet_right::can_cast(int obj) const {
//Editing it is a sign of a certain medical condition. We're not sure which one.
else
else
+ enigma::debug_scope $current_scope("event 'alarm_0' for object 'controller_enemy'");
+ enigma::debug_scope $current_scope("event 'alarm_0' for object 'controller_new_life'");
+ enigma::debug_scope $current_scope("event 'alarm_0' for object 'obj_myplane'");
+ enigma::debug_scope $current_scope("event 'alarm_1' for object 'controller_enemy'");
+ enigma::debug_scope $current_scope("event 'alarm_2' for object 'controller_enemy'");
+ enigma::debug_scope $current_scope("event 'alarm_3' for object 'controller_enemy'");
+ enigma::debug_scope $current_scope("event 'alarm_4' for object 'controller_enemy'");
+ enigma::debug_scope $current_scope("event 'animationend' for object 'obj_explosion1'");
+ enigma::debug_scope $current_scope("event 'animationend' for object 'obj_explosion2'");
+ enigma::debug_scope $current_scope("event 'collision_obj_back_bullet' for object 'obj_enemy1'");
+ enigma::debug_scope $current_scope("event 'collision_obj_back_bullet' for object 'obj_enemy2'");
+ enigma::debug_scope $current_scope("event 'collision_obj_back_bullet' for object 'obj_enemy3'");
+ enigma::debug_scope $current_scope("event 'collision_obj_back_bullet' for object 'obj_enemy4'");
+ enigma::debug_scope $current_scope("event 'collision_obj_back_bullet' for object 'obj_enemy5'");
+ enigma::debug_scope $current_scope("event 'collision_obj_bullet' for object 'obj_enemy1'");
+ enigma::debug_scope $current_scope("event 'collision_obj_bullet' for object 'obj_enemy2'");
+ enigma::debug_scope $current_scope("event 'collision_obj_bullet' for object 'obj_enemy3'");
+ enigma::debug_scope $current_scope("event 'collision_obj_bullet' for object 'obj_enemy4'");
+ enigma::debug_scope $current_scope("event 'collision_obj_bullet' for object 'obj_enemy5'");
+ enigma::debug_scope $current_scope("event 'collision_obj_bullet' for object 'obj_newlife'");
+ enigma::debug_scope $current_scope("event 'collision_obj_myplane' for object 'obj_enemy1'");
+ enigma::debug_scope $current_scope("event 'collision_obj_myplane' for object 'obj_enemy2'");
+ enigma::debug_scope $current_scope("event 'collision_obj_myplane' for object 'obj_enemy3'");
+ enigma::debug_scope $current_scope("event 'collision_obj_myplane' for object 'obj_enemy4'");
+ enigma::debug_scope $current_scope("event 'collision_obj_myplane' for object 'obj_enemy5'");
+ enigma::debug_scope $current_scope("event 'collision_obj_myplane' for object 'obj_enemybullet2'");
+ enigma::debug_scope $current_scope("event 'collision_obj_myplane' for object 'obj_enenybullet1'");
+ enigma::debug_scope $current_scope("event 'collision_obj_myplane' for object 'obj_newlife'");
+ enigma::debug_scope $current_scope("event 'collision_obj_side_bullet_left' for object 'obj_enemy1'");
+ enigma::debug_scope $current_scope("event 'collision_obj_side_bullet_left' for object 'obj_enemy2'");
+ enigma::debug_scope $current_scope("event 'collision_obj_side_bullet_left' for object 'obj_enemy3'");
+ enigma::debug_scope $current_scope("event 'collision_obj_side_bullet_left' for object 'obj_enemy4'");
+ enigma::debug_scope $current_scope("event 'collision_obj_side_bullet_left' for object 'obj_enemy5'");
+ enigma::debug_scope $current_scope("event 'collision_obj_side_bullet_left' for object 'obj_newlife'");
+ enigma::debug_scope $current_scope("event 'collision_obj_side_bullet_right' for object 'obj_enemy1'");
+ enigma::debug_scope $current_scope("event 'collision_obj_side_bullet_right' for object 'obj_enemy2'");
+ enigma::debug_scope $current_scope("event 'collision_obj_side_bullet_right' for object 'obj_enemy3'");
+ enigma::debug_scope $current_scope("event 'collision_obj_side_bullet_right' for object 'obj_enemy4'");
+ enigma::debug_scope $current_scope("event 'collision_obj_side_bullet_right' for object 'obj_enemy5'");
+ enigma::debug_scope $current_scope("event 'collision_obj_side_bullet_right' for object 'obj_newlife'");
+ enigma::debug_scope $current_scope("event 'create' for object 'controller_enemy'");
+ enigma::debug_scope $current_scope("event 'create' for object 'controller_life'");
+ enigma::debug_scope $current_scope("event 'create' for object 'controller_new_life'");
+ enigma::debug_scope $current_scope("event 'create' for object 'obj_back_bullet'");
+ enigma::debug_scope $current_scope("event 'create' for object 'obj_bullet'");
+ enigma::debug_scope $current_scope("event 'create' for object 'obj_enemy1'");
+ enigma::debug_scope $current_scope("event 'create' for object 'obj_enemy2'");
+ enigma::debug_scope $current_scope("event 'create' for object 'obj_enemy3'");
+ enigma::debug_scope $current_scope("event 'create' for object 'obj_enemy4'");
+ enigma::debug_scope $current_scope("event 'create' for object 'obj_enemy5'");
+ enigma::debug_scope $current_scope("event 'create' for object 'obj_enemybullet2'");
+ enigma::debug_scope $current_scope("event 'create' for object 'obj_enenybullet1'");
+ enigma::debug_scope $current_scope("event 'create' for object 'obj_island1'");
+ enigma::debug_scope $current_scope("event 'create' for object 'obj_island2'");
+ enigma::debug_scope $current_scope("event 'create' for object 'obj_island3'");
+ enigma::debug_scope $current_scope("event 'create' for object 'obj_myplane'");
+ enigma::debug_scope $current_scope("event 'create' for object 'obj_newlife'");
+ enigma::debug_scope $current_scope("event 'create' for object 'obj_side_bullet_left'");
+ enigma::debug_scope $current_scope("event 'create' for object 'obj_side_bullet_right'");
+ enigma::debug_scope $current_scope("event 'draw' for object 'controller_life'");
+ enigma::debug_scope $current_scope("event 'keyboard_49' for object 'controler_test'");
+ enigma::debug_scope $current_scope("event 'keyboard_Down' for object 'obj_myplane'");
+ enigma::debug_scope $current_scope("event 'keyboard_Left' for object 'obj_myplane'");
+ enigma::debug_scope $current_scope("event 'keyboard_Right' for object 'obj_myplane'");
+ enigma::debug_scope $current_scope("event 'keyboard_Space' for object 'obj_myplane'");
+ enigma::debug_scope $current_scope("event 'keyboard_Up' for object 'obj_myplane'");
+ enigma::debug_scope $current_scope("event 'keypressed_Alt' for object 'obj_myplane'");
+ enigma::debug_scope $current_scope("event 'keypressed_Control' for object 'obj_myplane'");
+ enigma::debug_scope $current_scope("event 'nomorehealth' for object 'controller_life'");
+ enigma::debug_scope $current_scope("event 'nomorelives' for object 'controller_life'");
+ enigma::debug_scope $current_scope("event 'outsideroom' for object 'obj_enemybullet2'");
+ enigma::debug_scope $current_scope("event 'outsideroom' for object 'obj_enenybullet1'");
+ enigma::debug_scope $current_scope("event 'step' for object 'obj_back_bullet'");
+ enigma::debug_scope $current_scope("event 'step' for object 'obj_bullet'");
+ enigma::debug_scope $current_scope("event 'step' for object 'obj_enemy1'");
+ enigma::debug_scope $current_scope("event 'step' for object 'obj_enemy2'");
+ enigma::debug_scope $current_scope("event 'step' for object 'obj_enemy3'");
+ enigma::debug_scope $current_scope("event 'step' for object 'obj_enemy4'");
+ enigma::debug_scope $current_scope("event 'step' for object 'obj_enemy5'");
+ enigma::debug_scope $current_scope("event 'step' for object 'obj_island1'");
+ enigma::debug_scope $current_scope("event 'step' for object 'obj_island2'");
+ enigma::debug_scope $current_scope("event 'step' for object 'obj_island3'");
+ enigma::debug_scope $current_scope("event 'step' for object 'obj_newlife'");
+ enigma::debug_scope $current_scope("event 'step' for object 'obj_side_bullet_left'");
** ENIGMA is an environment designed to create games and other programs with a **
** ENIGMA is free software: you can redistribute it and/or modify it under the **
enigma::place_meeting_inst(x,y,instance_other->id)) {
@@ -2123,33 +2207,33 @@ bool enigma::OBJ_obj_side_bullet_right::can_cast(int obj) const {
** Foundation, version 3 of the license or any later version. **
game_restart();
** high-level, fully compilable language. Developers of ENIGMA or anything **
- if(action_if_dice(30))
- if(action_if_dice(75))
- if(action_if_dice(80))
- if(action_if_number(obj_enemy1, 8, 1))
- if(action_if_number(obj_enemy2, 5, 1))
- if(action_if_number(obj_enemy3, 3, 1))
- if(action_if_number(obj_myplane, 0, 2))
- if(action_if_variable(can_shoot, 1, 0))
- if(action_if_variable(score, 100, 2))
- if(action_if_variable(score, 40, 2))
- if(action_if_variable(x, 16, 2))
- if(action_if_variable(x, 40, 2))
- if(action_if_variable(x, room_width - 40, 1))
-if(action_if_variable(y, - 16, 1))
-if(action_if_variable(y, - 16, 1))
-if(action_if_variable(y, - 16, 1))
-if(action_if_variable(y, - 32, 1))
- if(action_if_variable(y, 40, 2))
- if(action_if_variable(y, room_height - 120, 1))
-if(action_if_variable(y, room_height, 2))
-if(action_if_variable(y, room_height, 2))
-if(action_if_variable(y, room_height, 2))
-if(action_if_variable(y, room_height + 32, 2))
-if(action_if_variable(y, room_height + 32, 2))
-if(action_if_variable(y, room_height + 32, 2))
-if(action_if_variable(y, room_height + 32, 2))
-if(action_if_variable(y, room_height + 32, 2))
+ __if__ = action_if_dice(30);
+ __if__ = action_if_dice(75);
+ __if__ = action_if_dice(80);
+ __if__ = action_if_number(obj_enemy1, 8, 1);
+ __if__ = action_if_number(obj_enemy2, 5, 1);
+ __if__ = action_if_number(obj_enemy3, 3, 1);
+ __if__ = action_if_number(obj_myplane, 0, 2);
+ __if__ = action_if_variable(can_shoot, 1, 0);
+ __if__ = action_if_variable(score, 100, 2);
+ __if__ = action_if_variable(score, 40, 2);
+ __if__ = action_if_variable(x, 16, 2);
+ __if__ = action_if_variable(x, 40, 2);
+ __if__ = action_if_variable(x, room_width - 40, 1);
+ __if__ = action_if_variable(y, - 16, 1);
+ __if__ = action_if_variable(y, - 16, 1);
+ __if__ = action_if_variable(y, - 16, 1);
+ __if__ = action_if_variable(y, - 32, 1);
+ __if__ = action_if_variable(y, 40, 2);
+ __if__ = action_if_variable(y, room_height - 120, 1);
+ __if__ = action_if_variable(y, room_height, 2);
+ __if__ = action_if_variable(y, room_height, 2);
+ __if__ = action_if_variable(y, room_height, 2);
+ __if__ = action_if_variable(y, room_height + 32, 2);
+ __if__ = action_if_variable(y, room_height + 32, 2);
+ __if__ = action_if_variable(y, room_height + 32, 2);
+ __if__ = action_if_variable(y, room_height + 32, 2);
+ __if__ = action_if_variable(y, room_height + 32, 2);
if (enigma::glaccess(int(other))->solid &&
if (enigma::glaccess(int(other))->solid &&
if (enigma::glaccess(int(other))->solid &&
@@ -2305,6 +2389,33 @@ if(action_if_variable(y, room_height + 32, 2))
if (enigma::place_meeting_inst(x, y, obj_side_bullet_right)) {
if (enigma::place_meeting_inst(x, y, obj_side_bullet_right)) {
if (enigma::place_meeting_inst(x, y, obj_side_bullet_right)) {
+ if((__if__))
+ if((__if__))
+ if((__if__))
+ if((__if__))
+ if((__if__))
+ if((__if__))
+ if((__if__))
+ if((__if__))
+ if((__if__))
+ if((__if__))
+ if((__if__))
+ if((__if__))
+ if((__if__))
+ if((__if__))
+ if((__if__))
+ if((__if__))
+ if((__if__))
+ if((__if__))
+ if((__if__))
+ if((__if__))
+ if((__if__))
+ if((__if__))
+ if((__if__))
+ if((__if__))
+ if((__if__))
+ if((__if__))
+ if((__if__))
if (myevent_alarm_0_subcheck()) {
if (myevent_alarm_0_subcheck()) {
if (myevent_alarm_0_subcheck()) {
@@ -2756,6 +2867,26 @@ variant enigma::OBJ_obj_newlife::myevent_step()
variant enigma::OBJ_obj_side_bullet_left::myevent_create()
variant enigma::OBJ_obj_side_bullet_left::myevent_step()
variant enigma::OBJ_obj_side_bullet_right::myevent_create()
+ var __if__ = 0;
+ var __if__ = 0;
+ var __if__ = 0;
+ var __if__ = 0;
+ var __if__ = 0;
+ var __if__ = 0;
+ var __if__ = 0;
+ var __if__ = 0;
+var __if__ = 0;
+var __if__ = 0;
+var __if__ = 0;
+var __if__ = 0;
+var __if__ = 0;
+var __if__ = 0;
+var __if__ = 0;
+var __if__ = 0;
+var __if__ = 0;
+var __if__ = 0;
+var __if__ = 0;
+var __if__ = 0;
void constructor(object_basic* instance_b) {
void enigma::OBJ_controller_enemy::myevent_alarm() {
void enigma::OBJ_controller_new_life::myevent_alarm() {
@@ -2769,7 +2900,7 @@ void enigma::OBJ_obj_enenybullet1::myevent_collision_dispatcher() {
void enigma::OBJ_obj_myplane::myevent_alarm() {
void enigma::OBJ_obj_newlife::myevent_collision_dispatcher() {
** WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS **
- with((0))
+ with((obj_myplane))
with((other))
with((other))
with((other))
diff --git a/lgm/IDE_EDIT_resourcenames.h.sorted b/egm/IDE_EDIT_resourcenames.h.sorted
index aedfd01..75a4d99 100644
--- a/lgm/IDE_EDIT_resourcenames.h.sorted
+++ b/egm/IDE_EDIT_resourcenames.h.sorted
@@ -155,7 +155,6 @@
case 19: return "controller_new_life";
case 19: return "spr_myplane2";
case 1: return "controller_life";
- case -1: return "EnigmaDefault";
case 1: return "snd_explosion1";
case 1: return "spr_life";
case 20: return "obj_newlife";
@@ -202,8 +201,6 @@ const char *resource_file_path="$exe";
default: return "<undefined>";
** details. **
//Editing it is a sign of a certain medical condition. We're not sure which one.
- { "EnigmaDefault", -1 },
- EnigmaDefault = -1,
** ENIGMA is an environment designed to create games and other programs with a **
** ENIGMA is free software: you can redistribute it and/or modify it under the **
{ enigma_user::asset_background,
diff --git a/lgm/IDE_EDIT_roomcreates.h.sorted b/egm/IDE_EDIT_roomcreates.h.sorted
index bd58921..b482e26 100644
--- a/lgm/IDE_EDIT_roomcreates.h.sorted
+++ b/egm/IDE_EDIT_roomcreates.h.sorted
@@ -27,6 +27,8 @@
** Copyright (C) 2008 Josh Ventura **
** details. **
//Editing it is a sign of a certain medical condition. We're not sure which one.
+ enigma::debug_scope $current_scope("'room creation' for room 'rm_main'");
+ enigma::debug_scope $current_scope("'room preCreation' for room 'rm_main'");
** ENIGMA is an environment designed to create games and other programs with a **
** ENIGMA is free software: you can redistribute it and/or modify it under the **
extension_libpng_init();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment