mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2025-04-09 05:44:44 -07:00
Use const_skip and const_next macros for brevity
This commit is contained in:
parent
6ca82e5c86
commit
c086de0c98
@ -17,13 +17,7 @@
|
||||
const BATTLEANIMSTRUCT_ANON_JT_INDEX
|
||||
const BATTLEANIMSTRUCT_0F
|
||||
const BATTLEANIMSTRUCT_10
|
||||
const BATTLEANIMSTRUCT_11
|
||||
const BATTLEANIMSTRUCT_12
|
||||
const BATTLEANIMSTRUCT_13
|
||||
const BATTLEANIMSTRUCT_14
|
||||
const BATTLEANIMSTRUCT_15
|
||||
const BATTLEANIMSTRUCT_16
|
||||
const BATTLEANIMSTRUCT_17
|
||||
const_skip 7
|
||||
BATTLEANIMSTRUCT_LENGTH EQU const_value
|
||||
NUM_ANIM_OBJECTS EQU 10 ; see wActiveAnimObjects
|
||||
|
||||
|
@ -192,7 +192,7 @@ ALL_STATUS EQU (1 << PSN) | (1 << BRN) | (1 << FRZ) | (1 << PAR) | SLP
|
||||
const SUBSTATUS_X_ACCURACY
|
||||
const SUBSTATUS_MIST
|
||||
const SUBSTATUS_FOCUS_ENERGY
|
||||
const SUBSTATUS_UNKNOWN_1
|
||||
const_skip
|
||||
const SUBSTATUS_SUBSTITUTE
|
||||
const SUBSTATUS_RECHARGE
|
||||
const SUBSTATUS_RAGE
|
||||
@ -201,8 +201,8 @@ ALL_STATUS EQU (1 << PSN) | (1 << BRN) | (1 << FRZ) | (1 << PAR) | SLP
|
||||
; wPlayerSubStatus5 or wEnemySubStatus5 bit flags
|
||||
const_def
|
||||
const SUBSTATUS_TOXIC
|
||||
const SUBSTATUS_UNKNOWN_2
|
||||
const SUBSTATUS_UNKNOWN_3
|
||||
const_skip
|
||||
const_skip
|
||||
const SUBSTATUS_TRANSFORMED
|
||||
const SUBSTATUS_ENCORED
|
||||
const SUBSTATUS_LOCK_ON
|
||||
@ -212,7 +212,7 @@ ALL_STATUS EQU (1 << PSN) | (1 << BRN) | (1 << FRZ) | (1 << PAR) | SLP
|
||||
; wPlayerScreens or wEnemyScreens bit flags
|
||||
const_def
|
||||
const SCREENS_SPIKES
|
||||
const SCREENS_UNUSED
|
||||
const_skip
|
||||
const SCREENS_SAFEGUARD
|
||||
const SCREENS_LIGHT_SCREEN
|
||||
const SCREENS_REFLECT
|
||||
@ -239,9 +239,9 @@ ALL_STATUS EQU (1 << PSN) | (1 << BRN) | (1 << FRZ) | (1 << PAR) | SLP
|
||||
const BATTLEACTION_SWITCH4
|
||||
const BATTLEACTION_SWITCH5
|
||||
const BATTLEACTION_SWITCH6
|
||||
const BATTLEACTION_A
|
||||
const BATTLEACTION_B
|
||||
const BATTLEACTION_C
|
||||
const_skip
|
||||
const_skip
|
||||
const_skip
|
||||
const BATTLEACTION_SKIPTURN
|
||||
const BATTLEACTION_STRUGGLE
|
||||
const BATTLEACTION_FORFEIT
|
||||
|
@ -105,11 +105,11 @@
|
||||
const PAAD_TESTING
|
||||
|
||||
; CreditsScript indexes (see data/credits_script.asm)
|
||||
const_def -7
|
||||
const CREDITS_THEEND
|
||||
const CREDITS_WAIT2
|
||||
const CREDITS_MUSIC
|
||||
const CREDITS_CLEAR
|
||||
const CREDITS_SCENE
|
||||
const CREDITS_WAIT
|
||||
const_def -1, -1
|
||||
const CREDITS_END
|
||||
const CREDITS_WAIT
|
||||
const CREDITS_SCENE
|
||||
const CREDITS_CLEAR
|
||||
const CREDITS_MUSIC
|
||||
const CREDITS_WAIT2
|
||||
const CREDITS_THEEND
|
||||
|
@ -1,5 +1,5 @@
|
||||
; decoration types
|
||||
const_value = 1
|
||||
const_def 1
|
||||
const DECO_PLANT
|
||||
const DECO_BED
|
||||
const DECO_CARPET
|
||||
@ -8,7 +8,7 @@ const_value = 1
|
||||
const DECO_BIGDOLL
|
||||
|
||||
; DecorationNames indexes (see data/decorations/names.asm)
|
||||
const_value = 1
|
||||
const_def 1
|
||||
const PUT_IT_AWAY
|
||||
const MAGNAPLANT
|
||||
const TROPICPLANT
|
||||
@ -36,7 +36,7 @@ const_value = 1
|
||||
const GREEN_CARPET
|
||||
|
||||
; DoDecorationAction2.DecoActions indexes (see engine/overworld/decorations.asm)
|
||||
const_value = 1
|
||||
const_def 1
|
||||
const SET_UP_BED
|
||||
const PUT_AWAY_BED
|
||||
const SET_UP_CARPET
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
||||
; item_attributes struct members (see data/items/attributes.asm)
|
||||
const_def
|
||||
const ITEMATTR_PRICE
|
||||
const ITEMATTR_PRICE_LO
|
||||
const ITEMATTR_PRICE_HI
|
||||
const ITEMATTR_EFFECT
|
||||
const ITEMATTR_PARAM
|
||||
@ -19,10 +19,12 @@ ITEMATTR_STRUCT_LENGTH EQU const_value
|
||||
; item menu types
|
||||
; UseItem.dw indexes (see engine/items/pack.asm)
|
||||
; UseRegisteredItem.SwitchTo indexes (see engine/overworld/select_menu.asm)
|
||||
ITEMMENU_NOUSE EQU 0
|
||||
ITEMMENU_CURRENT EQU 4
|
||||
ITEMMENU_PARTY EQU 5
|
||||
ITEMMENU_CLOSE EQU 6
|
||||
const_def
|
||||
const ITEMMENU_NOUSE ; 0
|
||||
const_skip 3
|
||||
const ITEMMENU_CURRENT ; 4
|
||||
const ITEMMENU_PARTY ; 5
|
||||
const ITEMMENU_CLOSE ; 6
|
||||
|
||||
; item actions
|
||||
CANT_SELECT_F EQU 6
|
||||
@ -57,13 +59,13 @@ MAIL_STRUCT_LENGTH EQU $2f ; mailmsg struct
|
||||
const HELD_BERRY
|
||||
const HELD_2
|
||||
const HELD_LEFTOVERS
|
||||
const HELD_4
|
||||
const_skip
|
||||
const HELD_5
|
||||
const HELD_RESTORE_PP
|
||||
const HELD_7
|
||||
const_skip
|
||||
const HELD_CLEANSE_TAG
|
||||
|
||||
const_def 10
|
||||
const_next 10
|
||||
const HELD_HEAL_POISON
|
||||
const HELD_HEAL_FREEZE
|
||||
const HELD_HEAL_BURN
|
||||
@ -72,7 +74,7 @@ MAIL_STRUCT_LENGTH EQU $2f ; mailmsg struct
|
||||
const HELD_HEAL_STATUS
|
||||
const HELD_HEAL_CONFUSION
|
||||
|
||||
const_def 20
|
||||
const_next 20
|
||||
const HELD_PREVENT_POISON
|
||||
const HELD_PREVENT_BURN
|
||||
const HELD_PREVENT_FREEZE
|
||||
@ -80,7 +82,7 @@ MAIL_STRUCT_LENGTH EQU $2f ; mailmsg struct
|
||||
const HELD_PREVENT_PARALYZE
|
||||
const HELD_PREVENT_CONFUSE
|
||||
|
||||
const_def 30
|
||||
const_next 30
|
||||
const HELD_30
|
||||
const HELD_ATTACK_UP
|
||||
const HELD_DEFENSE_UP
|
||||
@ -91,12 +93,12 @@ MAIL_STRUCT_LENGTH EQU $2f ; mailmsg struct
|
||||
const HELD_EVASION_UP
|
||||
const HELD_38
|
||||
|
||||
const_def 40
|
||||
const HELD_40
|
||||
const HELD_41
|
||||
const_next 40
|
||||
const_skip
|
||||
const_skip
|
||||
const HELD_METAL_POWDER
|
||||
|
||||
const_def 50
|
||||
const_next 50
|
||||
const HELD_NORMAL_BOOST
|
||||
const HELD_FIGHTING_BOOST
|
||||
const HELD_FLYING_BOOST
|
||||
@ -115,7 +117,7 @@ MAIL_STRUCT_LENGTH EQU $2f ; mailmsg struct
|
||||
const HELD_DARK_BOOST
|
||||
const HELD_STEEL_BOOST
|
||||
|
||||
const_def 70
|
||||
const_next 70
|
||||
const HELD_CATCH_CHANCE
|
||||
const HELD_71
|
||||
const HELD_ESCAPE
|
||||
@ -124,5 +126,5 @@ MAIL_STRUCT_LENGTH EQU $2f ; mailmsg struct
|
||||
const HELD_FLINCH
|
||||
const HELD_AMULET_COIN
|
||||
const HELD_BRIGHTPOWDER
|
||||
const HELD_78
|
||||
const_skip
|
||||
const HELD_FOCUS_BAND
|
||||
|
@ -33,8 +33,8 @@
|
||||
const OBJECT_1E ; 1e
|
||||
const OBJECT_1F ; 1f
|
||||
const OBJECT_RANGE ; 20
|
||||
; 21-27 are not used
|
||||
OBJECT_LENGTH EQU 40
|
||||
const_skip 7
|
||||
OBJECT_LENGTH EQU const_value
|
||||
NUM_OBJECT_STRUCTS EQU 13 ; see wObjectStructs
|
||||
|
||||
; object_struct OBJECT_FACING values
|
||||
@ -99,21 +99,20 @@ ABSOLUTE_TILE_ID EQU 1 << ABSOLUTE_TILE_ID_F
|
||||
; map_object struct members (see macros/wram.asm)
|
||||
const_def
|
||||
const MAPOBJECT_OBJECT_STRUCT_ID ; 0
|
||||
const MAPOBJECT_SPRITE ; 1
|
||||
const MAPOBJECT_Y_COORD ; 2
|
||||
const MAPOBJECT_X_COORD ; 3
|
||||
const MAPOBJECT_MOVEMENT ; 4
|
||||
const MAPOBJECT_RADIUS ; 5
|
||||
const MAPOBJECT_HOUR ; 6
|
||||
const MAPOBJECT_TIMEOFDAY ; 7
|
||||
const MAPOBJECT_COLOR ; 8
|
||||
const MAPOBJECT_RANGE ; 9
|
||||
const MAPOBJECT_SCRIPT_POINTER ; a
|
||||
const MAPOBJECT_POINTER_HI ; b
|
||||
const MAPOBJECT_EVENT_FLAG ; c
|
||||
const MAPOBJECT_FLAG_HI ; d
|
||||
const MAPOBJECT_E ; unused
|
||||
const MAPOBJECT_F ; unused
|
||||
const MAPOBJECT_SPRITE ; 1
|
||||
const MAPOBJECT_Y_COORD ; 2
|
||||
const MAPOBJECT_X_COORD ; 3
|
||||
const MAPOBJECT_MOVEMENT ; 4
|
||||
const MAPOBJECT_RADIUS ; 5
|
||||
const MAPOBJECT_HOUR ; 6
|
||||
const MAPOBJECT_TIMEOFDAY ; 7
|
||||
const MAPOBJECT_COLOR ; 8
|
||||
const MAPOBJECT_RANGE ; 9
|
||||
const MAPOBJECT_SCRIPT_POINTER ; a
|
||||
const_skip ; high MAPOBJECT_SCRIPT_POINTER byte
|
||||
const MAPOBJECT_EVENT_FLAG ; c
|
||||
const_skip ; high MAPOBJECT_EVENT_FLAG byte
|
||||
const_skip 2 ; unused
|
||||
MAPOBJECT_LENGTH EQU const_value
|
||||
|
||||
; SpriteMovementData struct members (see data/sprites/map_objects.asm)
|
||||
|
@ -87,7 +87,7 @@ HMENURETURN_ASM EQU %11111111
|
||||
const PARTYMENUACTION_GIVE_ITEM
|
||||
const PARTYMENUACTION_MOBILE ; mobile
|
||||
; PrintPartyMenuActionText arguments (see engine/pokemon/party_menu.asm)
|
||||
const_def $f0
|
||||
const_next $f0
|
||||
const PARTYMENUTEXT_HEAL_PSN
|
||||
const PARTYMENUTEXT_HEAL_BRN
|
||||
const PARTYMENUTEXT_HEAL_FRZ
|
||||
|
@ -259,11 +259,8 @@
|
||||
const BEAT_UP ; fb
|
||||
NUM_ATTACKS EQU const_value - 1
|
||||
|
||||
const MOVE_OR_ANIM_FC ; fc
|
||||
const MOVE_OR_ANIM_FD ; fd
|
||||
const MOVE_OR_ANIM_FE ; fe
|
||||
|
||||
; Battle animations use the same constants as the moves up to this point
|
||||
const_next $ff
|
||||
const ANIM_SWEET_SCENT_2 ; ff
|
||||
const ANIM_THROW_POKE_BALL ; 100
|
||||
const ANIM_SEND_OUT_MON ; 101
|
||||
|
@ -8,9 +8,9 @@
|
||||
const PHONE_SCHOOLBOY_JACK
|
||||
const PHONE_POKEFAN_BEVERLY
|
||||
const PHONE_SAILOR_HUEY
|
||||
const PHONE_08
|
||||
const PHONE_09
|
||||
const PHONE_0A
|
||||
const_skip
|
||||
const_skip
|
||||
const_skip
|
||||
const PHONE_COOLTRAINERM_GAVEN
|
||||
const PHONE_COOLTRAINERF_BETH
|
||||
const PHONE_BIRDKEEPER_JOSE
|
||||
@ -25,7 +25,7 @@
|
||||
const PHONE_JUGGLER_IRWIN
|
||||
const PHONE_BUG_CATCHER_ARNIE
|
||||
const PHONE_SCHOOLBOY_ALAN
|
||||
const PHONE_19
|
||||
const_skip
|
||||
const PHONE_LASS_DANA
|
||||
const PHONE_SCHOOLBOY_CHAD
|
||||
const PHONE_POKEFANM_DEREK
|
||||
@ -59,12 +59,12 @@
|
||||
const PHONE_CONTACT_MAP_NUMBER
|
||||
const PHONE_CONTACT_SCRIPT1_TIME
|
||||
const PHONE_CONTACT_SCRIPT1_BANK
|
||||
const PHONE_CONTACT_SCRIPT1_ADDR_LO
|
||||
const PHONE_CONTACT_SCRIPT1_ADDR_HI
|
||||
const PHONE_CONTACT_SCRIPT1_ADDR
|
||||
const_skip ; high PHONE_CONTACT_SCRIPT1_ADDR byte
|
||||
const PHONE_CONTACT_SCRIPT2_TIME
|
||||
const PHONE_CONTACT_SCRIPT2_BANK
|
||||
const PHONE_CONTACT_SCRIPT2_ADDR_LO
|
||||
const PHONE_CONTACT_SCRIPT2_ADDR_HI
|
||||
const PHONE_CONTACT_SCRIPT2_ADDR
|
||||
const_skip ; high PHONE_CONTACT_SCRIPT2_ADDR byte
|
||||
PHONE_CONTACT_SIZE EQU const_value
|
||||
|
||||
; maximum number of pokegear contacts
|
||||
|
@ -272,9 +272,8 @@ JOHTO_POKEMON EQU const_value
|
||||
const HO_OH ; fa
|
||||
const CELEBI ; fb
|
||||
NUM_POKEMON EQU const_value - 1
|
||||
const MON_FC ; fc
|
||||
const_skip ; fc
|
||||
const EGG ; fd
|
||||
const MON_FE ; fe
|
||||
|
||||
; Unown forms
|
||||
; indexes for:
|
||||
|
@ -106,7 +106,7 @@
|
||||
const SPRITE_STANDING_YOUNGSTER ; 66
|
||||
|
||||
; SpriteMons indexes (see data/sprites/sprite_mons.asm)
|
||||
const_def $80
|
||||
const_next $80
|
||||
SPRITE_POKEMON EQU const_value
|
||||
const SPRITE_UNOWN ; 80
|
||||
const SPRITE_GEODUDE ; 81
|
||||
@ -145,12 +145,12 @@ SPRITE_POKEMON EQU const_value
|
||||
const SPRITE_HO_OH ; a2
|
||||
|
||||
; special GetMonSprite values (see engine/overworld/overworld.asm)
|
||||
const_def $e0
|
||||
const_next $e0
|
||||
const SPRITE_DAY_CARE_MON_1 ; e0
|
||||
const SPRITE_DAY_CARE_MON_2 ; e1
|
||||
|
||||
; wVariableSprites indexes (see wram.asm)
|
||||
const_def $f0
|
||||
const_next $f0
|
||||
SPRITE_VARS EQU const_value
|
||||
const SPRITE_CONSOLE ; f0
|
||||
const SPRITE_DOLL_1 ; f1
|
||||
|
@ -1,7 +1,7 @@
|
||||
; overworld_sprite struct members (see data/sprites.asm)
|
||||
const_def
|
||||
const SPRITEDATA_ADDR ; 0
|
||||
const SPRITEDATA_ADDR_HI ; 1
|
||||
const_skip ; high SPRITEDATA_ADDR byte
|
||||
const SPRITEDATA_SIZE ; 2
|
||||
const SPRITEDATA_BANK ; 3
|
||||
const SPRITEDATA_TYPE ; 4
|
||||
|
@ -4,16 +4,14 @@
|
||||
const TRNATTR_ITEM2 ; 1
|
||||
const TRNATTR_BASEMONEY ; 2
|
||||
const TRNATTR_AI_MOVE_WEIGHTS ; 3
|
||||
const TRNATTR_AI2 ; 4
|
||||
const_skip ; high TRNATTR_AI_MOVE_WEIGHTS byte
|
||||
const TRNATTR_AI_ITEM_SWITCH ; 5
|
||||
const TRNATTR_AI4 ; 6
|
||||
const_skip ; high TRNATTR_AI_ITEM_SWITCH byte
|
||||
NUM_TRAINER_ATTRIBUTES EQU const_value
|
||||
|
||||
; TRNATTR_AI_MOVE_WEIGHTS bit flags (wEnemyTrainerAIFlags)
|
||||
; AIScoringPointers indexes (see engine/battle/ai/move.asm)
|
||||
const_def
|
||||
const NO_AI
|
||||
const_value = 0
|
||||
shift_const AI_BASIC
|
||||
shift_const AI_SETUP
|
||||
shift_const AI_TYPES
|
||||
@ -24,27 +22,24 @@ const_value = 0
|
||||
shift_const AI_CAUTIOUS
|
||||
shift_const AI_STATUS
|
||||
shift_const AI_RISKY
|
||||
shift_const AI_10
|
||||
shift_const AI_11
|
||||
shift_const AI_12
|
||||
shift_const AI_13
|
||||
shift_const AI_14
|
||||
shift_const AI_15
|
||||
NO_AI EQU 0
|
||||
|
||||
; TRNATTR_AI_ITEM_SWITCH bit flags
|
||||
CONTEXT_USE_F EQU 6
|
||||
UNKNOWN_USE_F EQU 5
|
||||
ALWAYS_USE_F EQU 4
|
||||
SWITCH_SOMETIMES_F EQU 2
|
||||
SWITCH_RARELY_F EQU 1
|
||||
SWITCH_OFTEN_F EQU 0
|
||||
const_def
|
||||
const SWITCH_OFTEN_F ; 0
|
||||
const SWITCH_RARELY_F ; 1
|
||||
const SWITCH_SOMETIMES_F ; 2
|
||||
const_skip ; 3
|
||||
const ALWAYS_USE_F ; 4
|
||||
const UNKNOWN_USE_F ; 5
|
||||
const CONTEXT_USE_F ; 6
|
||||
|
||||
CONTEXT_USE EQU 1 << CONTEXT_USE_F
|
||||
UNKNOWN_USE EQU 1 << UNKNOWN_USE_F
|
||||
ALWAYS_USE EQU 1 << ALWAYS_USE_F
|
||||
SWITCH_SOMETIMES EQU 1 << SWITCH_SOMETIMES_F
|
||||
SWITCH_RARELY EQU 1 << SWITCH_RARELY_F
|
||||
SWITCH_OFTEN EQU 1 << SWITCH_OFTEN_F
|
||||
SWITCH_RARELY EQU 1 << SWITCH_RARELY_F
|
||||
SWITCH_SOMETIMES EQU 1 << SWITCH_SOMETIMES_F
|
||||
ALWAYS_USE EQU 1 << ALWAYS_USE_F
|
||||
UNKNOWN_USE EQU 1 << UNKNOWN_USE_F
|
||||
CONTEXT_USE EQU 1 << CONTEXT_USE_F
|
||||
|
||||
; TrainerTypes indexes (see engine/battle/read_trainer_party.asm)
|
||||
const_def
|
||||
|
@ -19,15 +19,7 @@ PHYSICAL EQU const_value
|
||||
const STEEL
|
||||
|
||||
UNUSED_TYPES EQU const_value
|
||||
const TYPE_10
|
||||
const TYPE_11
|
||||
const TYPE_12
|
||||
const TYPE_13
|
||||
const TYPE_14
|
||||
const TYPE_15
|
||||
const TYPE_16
|
||||
const TYPE_17
|
||||
const TYPE_18
|
||||
const_next 19
|
||||
const CURSE_TYPE
|
||||
UNUSED_TYPES_END EQU const_value
|
||||
|
||||
|
@ -570,7 +570,7 @@ GetItemPrice:
|
||||
; Return the price of wCurItem in de.
|
||||
push hl
|
||||
push bc
|
||||
ld a, ITEMATTR_PRICE
|
||||
ld a, ITEMATTR_PRICE_LO
|
||||
call GetItemAttr
|
||||
ld e, a
|
||||
ld a, ITEMATTR_PRICE_HI
|
||||
|
@ -353,7 +353,7 @@ Function90199:
|
||||
ld hl, PHONE_CONTACT_SCRIPT1_BANK
|
||||
add hl, de
|
||||
ld b, [hl]
|
||||
ld hl, PHONE_CONTACT_SCRIPT1_ADDR_LO
|
||||
ld hl, PHONE_CONTACT_SCRIPT1_ADDR
|
||||
add hl, de
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
|
@ -22,3 +22,19 @@ shift_const: MACRO
|
||||
\1 EQU (1 << const_value)
|
||||
const_value = const_value + const_inc
|
||||
ENDM
|
||||
|
||||
const_skip: MACRO
|
||||
if _NARG >= 1
|
||||
const_value = const_value + const_inc * (\1)
|
||||
else
|
||||
const_value = const_value + const_inc
|
||||
endc
|
||||
ENDM
|
||||
|
||||
const_next: MACRO
|
||||
if (const_value > 0 && \1 < const_value) || (const_value < 0 && \1 > const_value)
|
||||
fail "const_next cannot go backwards from {const_value} to \1"
|
||||
else
|
||||
const_value = \1
|
||||
endc
|
||||
ENDM
|
||||
|
@ -41,7 +41,7 @@ noise_note: MACRO
|
||||
ENDM
|
||||
|
||||
; MusicCommands indexes (see audio/engine.asm)
|
||||
const_def $d0, 8
|
||||
const_def $d0
|
||||
FIRST_MUSIC_CMD EQU const_value
|
||||
|
||||
const octave_cmd ; $d0
|
||||
@ -49,7 +49,7 @@ octave: MACRO
|
||||
db octave_cmd | 8 - (\1) ; octave
|
||||
ENDM
|
||||
|
||||
const_inc = 1
|
||||
const_skip 7 ; all octave values
|
||||
|
||||
const note_type_cmd ; $d8
|
||||
note_type: MACRO
|
||||
|
@ -181,6 +181,6 @@ ENDM
|
||||
command startloop ; ae
|
||||
command curl ; af
|
||||
|
||||
const_def $fe
|
||||
command endturn ; fe
|
||||
const_def -1, -1
|
||||
command endmove ; ff
|
||||
command endturn ; fe
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user